繁体   English   中英

为什么getchar()不会停止在C语言中读取字符串?

[英]Why doesnt getchar() stop reading strings in C?

我希望用户能够输入数字n,然后程序将从用户那里读取n个字符串。 但是现在程序不会停止读取字符串。

#include <stdio.h>

#define STRING_MAX 10

int main (void)
{
    char string[STRING_MAX];
    int count;
    int total;
    int n, i;
    int chr;

    scanf("%d", &n);

    for(i=0; i<n; i++)
    {
        do {
            count = 0;
            total = 0;
            while ((chr = getchar() != EOF)&& (chr != '\n'))
            {
                if (count < STRING_MAX - 1)
                    string[count++] = chr;
                total += 1;
            }
            string[count] = '\0';
        } while (total > STRING_MAX - 1);
        printf("The input string was:\n\t%s\n", string);
    }
    return 0;
}

因为这里您有操作员优先的问题

chr = getchar() != EOF

这被评估为

chr = (getchar() != EOF)

因为!=运算符的优先级高于赋值运算符= ,所以您只需要添加这样的括号即可

(chr = getchar()) != EOF

提示 :在访问n之前,请检查scanf()的返回值,因为如果输入无效,则您将在未初始化时尝试使用n ,这将导致未定义的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM