#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;
}
这个代码在输入很小的时候工作得很好,就像“跟踪空间”一样,但是在“拖尾空间删除”这样的大输入上崩溃了。我知道发生这种情况所以请帮助我。此程序删除字符串末尾的尾随空格。
答案 0 :(得分:1)
因为str
永远不会被初始化并指向垃圾数据。
你很幸运,这是未定义的行为
而是使用malloc()
为str
动态分配内存,我猜它。
像这样:char *str = malloc(100); // say for 100 characters
len
将小于或等于100(并应包含'\ 0')
另请注意,使用gets()
是一个坏主意。而是使用fgets()
或gets_s()
函数