这是Thareja的“数据结构和算法”教科书中的问题。我正在尝试解决为数据结构课程准备的问题。我正在https://www.onlinegdb.com/online_c_compiler上进行编译和运行。我的程序遇到了段错误,并且从未输入过if语句(我似乎无法找出原因)。这个问题可能很琐碎,我忽略了它,但是我希望另一组眼睛来看看它。
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
char str[100],ans[100];
int i=0,j=0;
clrscr();
printf("\nEnter string: ");
gets(str);
while(str[i]!='\0')
{
if(str[i]==' ')
{
i++;
continue;
}
ans[j]=str[i];
j++;
}
ans[j]='\0';
printf("\nThe string is: ");
puts(ans);
getch();
return 0;
}
感谢您的帮助。
答案 0 :(得分:0)
在我看来,问题出在变量i
的增量运算符上。
假设用户输入的字符串不为null,并且没有前导空格。
在这种情况下,您的代码成功进入了while循环(原因是它找不到空字符),接下来它检查是否是空格(str[i]==' ')
,根据假设,该空格不是,因此它继续存储ans[j]
中的字符。
至此,一切看起来还不错,但是程序移至下一行,您的代码增量为j
,但是i
呢?通过不递增i
,您可以在while循环中进入无限循环。
希望这会有所帮助。