C:计数字母,直到插入特定条目

How*_*irl 1 c strlen strcmp

我在C上有点生疏了.我正在学校任务,要求我创建一个程序,获取用户输入,然后打印输出.如果字符数高于50,则不打印任何内容并重新启用它们.退出不应打印计数(在本例中为4).

这是我到目前为止:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ()
{ /*Start of main*/

printf("Type any word you'd like <= 50 characters.\nType quit to exit:\n");

char word[50];
int wordLength = 0;

    while (strcmp(word, "quit") != 0)
    {/*open of while loop (strcmp ... != 0)*/

    scanf("%s\n", word);
    wordLength = strlen(word);
    if (wordLength > 50)
        {
            printf("Try again, >= 50 characters!:\n");
            scanf("%s", word);
            wordLength = strlen(word);
        }
    printf("%d\n", wordLength);

    }/*End of while loop (strcmp... != 0)*/

return 0;
}/*End of main*/
Run Code Online (Sandbox Code Playgroud)

在提交的单词之后,我似乎无法立即获得长度.它似乎变得不稳定.它显示了在输入新单词后最后提交的单词的数字.我把printf放在哪里都没关系,需要时间.

有人可以向我解释为什么它这么慢,并建议我可以实现一种方法,使其更快?这是一项学校作业,请不要直接回答,而是引导我进入我应该思考的方式?:)

我几乎认为这是带有延迟的低效编码.

你们都是救命的人!

Roh*_*han 5

\n从第一个删除scanf()

scanf("%s\n", word);
#---------^
Run Code Online (Sandbox Code Playgroud)

感谢@remyable,它\n有不同的含义scanf()- 不是你期望读取换行符的那个.参考C-faq 12.17

另外,检查超过50个不正确的字符的输入.你会进入缓冲区溢出.寻找不同的方式来限制它.