C计算标准输入中的单词和行的程序

我是C编程的新手,我现在正在尝试自学如何创建一个C程序,它可以计算输入流中的单词和行,并将两个总计打印到标准输出。

我实际上要做的是让程序计算行数并计算单词数量,这取决于我觉得我不在的单词的定义。

我想要单词排除空格,制表符,换行符,连字符或冒号。 让程序输出结果(单词和行)为小数。

#include int main() { int iochar; int words; int lines; printf("Enter something here:\n\n"); while ((iochar = getchar ()) !=EOF) { if((iochar == ' ') || (iochar == '\t') || (iochar == '\n')) putchar(iochar); } return 0; } 

我完全不喜欢这个节目吗?

如果您的问题是如何修复编译错误,那很简单。 最后添加一个右大括号。

但是,当且仅当用户键入空格,制表符或换行符时,您的程序仍将仅执行一次循环并且仅打印一个字符。 无论用户输入什么,程序都将终止。 我怀疑那是你想要的。

我怀疑这是你的意图:

 while ((iochar = getchar ()) !=EOF) { if((iochar == ' ') || (iochar == '\t') || (iochar == '\n')) { putchar(iochar); } } return 0; 

在你的“我想让你的数字在8列字段中正确对齐……”之后我无法理解你想说的话:(

 int words = 0; int lines = 0; char buffer[1024]; while(fgets(buffer, sizeof buffer, stdin)) { lines++; if(buffer[0] == '\n') continue; char *tmp = buffer-1; while(tmp = strchr(tmp+1, ' ')) words++; words++; /* count last word before \0*/ } printf("lines: %d, words: %d\n", lines, words); 

你需要/想要的是什么?

错误消息是:

Test.c:20:1:错误:输入结束时的预期声明或声明

它没有编译因为你缺少一个}

如果你正确缩进代码,就像这样,你会发现你的错误:

 #include int main() { int iochar; int words; int lines; printf("Enter something here:\n\n"); while ((iochar = getchar ()) !=EOF) { if((iochar==' ')||(iochar=='\t')||(iochar=='\n')) { putchar(iochar); iochar = getchar(); } return 0; } 

另一个可读性重要性的例子:)