C,换行中的每个单词

时间:2019-02-25 20:14:28

标签: c

任务是“用C编写一个程序,该程序将输入中的单词放在换行中而不使用字符串”。我试图通过这样做来解决它,但是我没有得到任何回应(即使只有一个字母也没有)。我也曾尝试过寻求其他任务的帮助,但他们通常使用字符串来解决。由于我是C语言的新手,所以我的初学者课程仍然仅适用于char而不适用于string。感谢您的提前帮助。

#include <stdio.h>
    int main() {
        int c;
        int state;
        state=1;
        while((c=getchar())!=EOF) {
            if(c=' ')
                 state=0;
            else 
                if (state=0) {
                    putchar('\n');
                    state=1; }
                    else putchar(c);
        }
    }

1 个答案:

答案 0 :(得分:0)

您的代码中有几个问题

  • if(c=' '),其中=必须为==
  • if (state=0),其中=必须为==
  • 空格后的字符丢失并替换为\ n
  • \ n之类的字符不被视为空格

函数 isspace 是您的朋友,可以知道字符是否具有空格的作用。

纠正所有问题的建议可以是:

#include <stdio.h>
#include <ctype.h>

int main() {
  int c;
  int inWord = 0;

  while((c=getchar())!=EOF) {
    if (!isspace(c)) {
      putchar(c);
      inWord = 1;
    }
    else if (inWord) {
      putchar('\n');
      inWord = 0;
    }
  }

  if (inWord)
    putchar('\n');
}

编译和执行:

pi@raspberrypi:/tmp $ gcc -pedantic -Wextra -g s.c
pi@raspberrypi:/tmp $ cat f
just    a
 test of  
validity
pi@raspberrypi:/tmp $ ./a.out < f
just
a
test
of
validity
pi@raspberrypi:/tmp $