gpt4 book ai didi

c - 编写 C 程序删除字符串之间的空格

转载 作者:行者123 更新时间:2023-11-30 19:14:37 27 4
gpt4 key购买 nike

我想创建一个程序来删除字符串中字符之间的空格。

这是我的代码:

#include<string.h> 
#include<stdlib.h>
#include<stdio.h>
int main(){
char str[10]="I love you",temp[20];
int i,j;
for(i=0;str[i];i++){
if(str[i] ==" "){
}
else{
temp[j]=str[i];
j++;
}
}
temp[j]='\0';
strcpy(str,temp);
printf("%s",str);
}

最佳答案

您的程序存在几个问题。

虽然字符数组的初始化在 C 中是有效的

char  str[10]="I love you",temp[20];
^^^^

尽管如此,数组 str 不会包含字符串文字 "I love you" 的终止零,因为字符串文字包含 11 个字符(包括终止零)。这给数组的处理带来了一些困难。

最好像这样声明数组

char  str[11]="I love you",temp[20];
^^^^

或者类似

char  str[]="I love you",temp[20];
^^^^

在这种情况下,数组将包含终止零。

在此声明中

if(str[i] ==" ") {
^^^^

将字符与指针进行比较,因为字符串文字 "" 被隐式转换为指向其第一个字符的指针。

我认为你的意思是字符常量而不是字符串文字

if(str[i] == ' ') {
^^^^

考虑到变量j未初始化。所以程序有未定义的行为。至少你应该写

int i,j = 0;
^^^^^

并且可以在不使用辅助数组的情况下编写程序。

它可能看起来像以下方式

#include <stdio.h>

int main( void )
{
char str[] = "I love you";

size_t i = 0;

while ( str[i] && str[i] != ' ' ) i++;

size_t j = i;

while ( str[i] )
{
if ( str[++i] != ' ' ) str[j++] = str[i];
}

puts( str );
}

它的输出是

Iloveyou

关于c - 编写 C 程序删除字符串之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790401/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com