-3
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char* str;
int i;
printf("Enter the String:\n");
gets(str);
int len=strlen(str)-1;
while(len>0&& isspace(str[len]))
len--;
str[len+1]='\0';
printf("Output string:\n%s\n",str);
return 0;
}

当输入很小(如“尾随空间”)时,此代码工作得非常好,但在大输入(如“尾随空间已删除”)时崩溃。我不知道为什么会这样,所以请帮助我。该程序删除字符串末尾的尾随空格。

4

1 回答 1

1

因为str从未初始化并且指向垃圾数据。

你很幸运,这是未定义的行为

而是使用malloc()动态分配内存,str我猜它会这样做。

像这样:char *str = malloc(100); // say for 100 characters

len然后将小于或等于 100(并且应该包括 '\0')

另请注意,使用gets()是一个坏主意。而是使用fgets()gets_s()功能

于 2013-01-26T23:20:47.950 回答