如何计算单词列表中每个单词中的字母?

时间:2011-08-12 20:17:18

标签: c

当前代码,它输出:

hjk
hg
kjgj
Word 0: 12
Word 1: 0
Word 2: 0

应该是:

Word 0: 3
Word 1: 2
Word 2: 4

我不知道我做错了什么,这是代码:

#include <stdio.h>

#define MAX_WORDS_COUNT 10

main()
{
    int wordsLength[MAX_WORDS_COUNT];
    int i, c, inspace = 0, currWord = 0;
    for (i = 0; i < MAX_WORDS_COUNT; i++) 
        wordsLength[i] = 0;

    while ((c = getchar()) != EOF) {
        if (c != ' ' || c != '\t' || c != '\n') {
            wordsLength[currWord]++;
            inspace = 0;
        } else {
            if (inspace == 0)
                currWord++;
            inspace = 1;
        }   
    }

    for(i = 0; i < MAX_WORDS_COUNT; i++)
        printf("Word %d: %d\n", i, wordsLength[i]);


}

2 个答案:

答案 0 :(得分:6)

    if (c != ' ' || c != '\t' || c != '\n') {

你应该使用&amp;&amp;。你有3个相互排斥的条件,并且正在对它们进行ORing,这意味着所有条件都满足这个条件。

    if (c != ' ' && c != '\t' && c != '\n') {

会奏效。

答案 1 :(得分:2)

您需要&&而不是|| ...否则请查看您发布的输出,它认为所有12个字符属于一个字。

更改此内容:if (c != ' ' || c != '\t' || c != '\n')

收件人:if (c != ' ' && c != '\t' && c != '\n')