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

时间:2012-09-25 21:55:16

标签: c

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

我完全不参与这个计划吗?

3 个答案:

答案 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;

    }

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

相关问题