无法在循环内使用fscanf()输入元素 #包括 #包括 #包括 #包括 int main(){ /*在此处输入代码。从标准输入读取输入。将输出打印到标准输出*/ int N,M,i,a,b,k,总计=0; fscanf(标准输入,“%d%d”、&N和&M); fprintf(标准输出,“N:%d,M:%d\N”,N,M); 对于(i=0;i#包括 #包括 #包括 #包括 int main(){ /*在此处输入代码。从标准输入读取输入。将输出打印到标准输出*/ int N,M,i,a,b,k,总计=0; fscanf(标准输入,“%d%d”、&N和&M); fprintf(标准输出,“N:%d,M:%d\N”,N,M); 对于(i=0;i

无法在循环内使用fscanf()输入元素 #包括 #包括 #包括 #包括 int main(){ /*在此处输入代码。从标准输入读取输入。将输出打印到标准输出*/ int N,M,i,a,b,k,总计=0; fscanf(标准输入,“%d%d”、&N和&M); fprintf(标准输出,“N:%d,M:%d\N”,N,M); 对于(i=0;i#包括 #包括 #包括 #包括 int main(){ /*在此处输入代码。从标准输入读取输入。将输出打印到标准输出*/ int N,M,i,a,b,k,总计=0; fscanf(标准输入,“%d%d”、&N和&M); fprintf(标准输出,“N:%d,M:%d\N”,N,M); 对于(i=0;i,c,C,具有格式字符串 fscanf(stdin, "%d, %d, %d", &a, &b, &k); 这意味着,fscanf希望您先键入一个数字,然后键入一个逗号,然后空格会丢弃任意数量的空白字符,包括none(这是多余的,因为%d已经跳过了它们),然后希望键入一个数字、一个逗号、任意数量的空白字符,包括none和一个数字 您键入三个由空格分隔的数字。fscanf读取第一个数字,但无法扫描逗号。对fscanf的其余调用需要先输入一个数字,但在stdin中找到一个逗号,因此失

具有格式字符串

fscanf(stdin, "%d, %d, %d", &a, &b, &k);
这意味着,
fscanf
希望您先键入一个数字,然后键入一个逗号,然后空格会丢弃任意数量的空白字符,包括none(这是多余的,因为
%d
已经跳过了它们),然后希望键入一个数字、一个逗号、任意数量的空白字符,包括none和一个数字

您键入三个由空格分隔的数字。
fscanf
读取第一个数字,但无法扫描逗号。对
fscanf
的其余调用需要先输入一个数字,但在
stdin
中找到一个逗号,因此失败

要解决它,就要改变

"%d, %d, %d"


你检查过返回值了吗?也就是说,flush()ing不会丢弃任何数据,它只转发缓冲数据。此外,您也不会显示您作为输入输入输入的内容。您是否输入了逗号?请注意,这在大多数系统上是未定义的行为-Windows是主要例外。您的输入是什么?请尝试删除该
fscanf
%d
之间的逗号。您的输入是什么(
fscanf()
)格式要求用逗号分隔数据中的数字;如果省略它们,则无法正常工作。还请添加测试,以检查
fscanf()
每次是否正常工作。正如您已经发现的,人们在输入格式上会出错;您的程序应该检测到输入格式的问题。
fscanf(stdin, "%d, %d, %d", &a, &b, &k);
"%d, %d, %d"
fscanf(stdin, "%d, %d, %d", &a, &b, &k);
fscanf(stdin, "%d %d %d", &a, &b, &k);
fscanf(stdin, "%d%d%d", &a, &b, &k);