用C编写一个程序,该程序从字符串中删除前导和尾随空格

时间:2018-07-28 15:59:53

标签: c c-strings

这是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;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在我看来,问题出在变量i的增量运算符上。 假设用户输入的字符串不为null,并且没有前导空格。       在这种情况下,您的代码成功进入了while循环(原因是它找不到空字符),接下来它检查是否是空格(str[i]==' '),根据假设,该空格不是,因此它继续存储ans[j]中的字符。       至此,一切看起来还不错,但是程序移至下一行,您的代码增量为j,但是i呢?通过不递增i,您可以在while循环中进入无限循环。       希望这会有所帮助。