我是C编程新手,我目前正在尝试自学如何创建一个可以计算输入流中的单词和行的C程序,并将两个总计打印到标准输出。
我实际上要做的是让程序计算行数并计算单词数量,具体取决于我觉得我不在的单词的定义。
我想要单词排除空格,制表符,换行符,连字符或冒号。让程序输出结果(单词和行)为小数。
#include<stdio.h>
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;
}
我完全不参与这个计划吗?
答案 0 :(得分:1)
如果您的问题是如何解决编译错误,那很简单。最后再添加一个右大括号。
但是当你的程序仍然只进行一次循环,当且仅当用户键入空格,制表符或换行符时才会打印一个字符。无论用户输入什么,程序都将终止。我怀疑那是你想要的。
我怀疑这是你的意图:
while ((iochar = getchar ()) !=EOF)
{
if((iochar == ' ') || (iochar == '\t') || (iochar == '\n'))
{
putchar(iochar);
}
}
return 0;
答案 1 :(得分: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);
是你需要/想要的吗?
答案 2 :(得分:0)
错误消息是:
Test.c:20:1:错误:输入结束时的预期声明或声明
它无法编译,因为您缺少}
。
如果您正确缩进代码,就会发现错误:
#include<stdio.h>
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;
}
可读性重要性的另一个例子:)