
[英]Problem reading two strings with getchar() and then printing those strings in 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.