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

标签 c strcmp strlen

我对 C 有点生疏。我在学校作业中要求我编写一个程序来获取用户输入,然后打印输出。如果字符数大于 50,则不打印任何内容并重新提示它们。 Quit 不应打印计数(在本例中为 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*/

我似乎无法立即获取提交单词后的长度。它似乎变得不稳定。它显示输入新词后最后提交的词的编号。将 printf 放在哪里并不重要,它需要时间。

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

我几乎认为这是延迟的低效编码。

你们都是救星!!!

最佳答案

从第一个 scanf()

中删除 \n
scanf("%s\n", word);
#---------^

感谢@remyable,\nscanf() 中有不同的含义 - 不是您希望在这里读取换行符 的含义。引用C-faq 12.17

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

关于C:计数字母直到插入特定条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28163107/

相关文章:

将字符串转换为大写以与 C 中的用户输入进行比较

c - 了解用于 strlen 优化的魔数(Magic Number) 0x07EFEFEFF

c - 即使在 C 中使用#include <string.h>,strlen 也不起作用

c - pcap_compile 的输出的可移植性如何?

string-comparison - strcmp() 为相同的字符串比较返回不同的值

c - strcmp 不工作,在第二次循环迭代中找到它

c - 在c中使用递归的strlen函数

c - "const"有成本吗?

c - 错误 234,有更多数据可用,有 RegQueryInfoKey 和 RegEnumValue

c - strcmp 输出之谜 - strcmp 实际上是如何比较字符串的?