使用C计算段落中的单词

时间:2015-06-19 14:15:58

标签: c

我在C中编写了一个程序来计算段落中的单词数。在终端屏幕上,它只需要一个句子作为输入然后冻结。有什么想法吗?我尝试过其他方法并且有效。只是想知道为什么这个没有。 这是我的代码:

#include <stdio.h>
#include <conio.h>
int main(void)
{   int i, m=0, t=1;
    char x, a[100];
    clrscr();
    printf("Type a paragraph to count the words in it.\n");
    while(t==1)
    {   i=0;
        while(x!='\n')
        {   x=getchar();
            a[i]=x;
            i++;
            if((x==' ')||(x=='.')||(x=='?')||(x=='!'))
            m++;
        }

        if(a[0]=='\n')
        t=0;
    }
    printf("\nNumber of words = %i", m);
    getch();
    return 0;
}

编辑: 我试图在这里使用的逻辑是: 内部循环最多包含100个字符。遇到\ n字符后,退出循环。外部循环用于将100个字符的限制扩展为无限个字符(直到退出外部循环)。如果在前一个循环以\ n结束后立即在第一个循环中遇到\ n字符,则退出外循环。这意味着要结束段落,您需要输入\ n \ n。

1 个答案:

答案 0 :(得分:2)

当它退出内部while循环时,如果a[0]不是\n,那么t将保持为1,但由于x没有&drawOval #39; t因为退出内循环而改变了,它不会重新输入它,所以你会一直停留在外循环中。