使用函数查找字母和单词

时间:2013-02-02 02:42:04

标签: c

我正在尝试获得字母数/字数的答案......我在计算单词时遇到了问题。

实际上在这里我只声明一个新单词是否有换行符的空格,制表符,但仍然不起作用..

这是我的功能:

int num_of_letters_words()
{
    int numberOfLetters = 0;
    int numberOfWords = 0;
    int userInput;
    int answer;
    printf("please enter your input:\n");
    while ((userInput = getchar()) != EOF)
    {
        if (ispunct(userInput))
            continue;

        else if(userInput == '\n')
            continue;

        else if (userInput == ' ')
            continue;

        else if (iscntrl(userInput))
            continue;

        else if (userInput == ' ')
            ;
        else
           numberOfLetters++;

        if (userInput == ' ' || userInput == '\n' || userInput == '\t')
            numberOfWords++;
    }
    answer = numberOfLetters/numberOfWords;
    return answer;
}

只有在功能结束时你才能看到单词counter ...这里有什么问题?

1 个答案:

答案 0 :(得分:3)

continue使你的循环继续下一次迭代,它会跳过它后面的内容。

假设“单词”将被定义为一个字母序列,后跟分隔符(空格,制表符等),然后您的循环可能如下所示:

while ((c = getchar()) != EOF)
{
    if (c == ' ' || c == '\t' || c == '\n' || etc.)
    {
        if (letterCountThisWord > 0)
            wordCount++;
        letterCountThisWord = 0;
        continue;
    }
    letterCount++;
    letterCountThisWord++;
}

if (letterCountThisWord > 0)
    wordCount++;

如果您不确定应用程序中发生了什么,那么有很多很棒的IDE提供了很好的调试工具。您可以逐步完成代码,观察变量的变化,并以这种方式真正理解您的代码。

还有一个建议:在桌子上放一些东西(瓶子,花等等)并想象它是你的教授或老板,并试着详细解释他的代码是如何工作的。你会发现自己不知道你的代码的某些部分实际上做了什么/正在发生什么,这将迫使你寻找答案(谷歌,书籍......)。

祝你好运:)