【发布时间】:2019-11-10 12:25:51
【问题描述】:
我正在尝试这个:
int M,N,K;
printf("Enter (m,k,n) : ");
scanf("%d %d %d ", &M, &K, &N);
printf("\nDone?");
这是在 main 函数内部。我需要程序来读取三个整数,但是当我运行它时,它只读取三个但不超过 scanf,即“完成?”没有被执行,就好像它还在等待更多的输入。如果我在最后一个 %d 之后删除空间,它工作正常。但是为什么会这样呢?
【问题讨论】:
-
相关:请勿在可能格式不正确的(人为)输入上使用
scanf()。 特别是不检查返回值——M、K和N可能在您的scanf()之后未初始化,您甚至都不知道。通常,最好读取完整的输入行 (fgets()),然后在内存中解析它们。这样你就可以回到输入行;获得更好的错误处理,例如strtol()、strtod()或strtok();并为有意义的错误消息提供完整的输入行。