我刚刚开始学习c。我这里有一个代码,可以接受用户的输入并进行打印。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[5];
int i ;
for(i=0;i<5;i++)
{
printf("enter the %d position no: ",i+1);
scanf("%d \n",&a[i]);
}
for(i = 0;i<5;i++)
printf("position %d : %d \n",i+1,a[i]);
}
这是我的输出控制台。
但是输出给出了令人误解的结果。 在scanf变红的第2行,它没有显示字符串“输入%d位置”,而是直接要求输入值。
答案 0 :(得分:2)
您的scanf
不需要空格和换行符,只需"%d"
。
for(i=0; i<5; i++)
{
printf("enter the %d position no: ",i+1);
scanf("%d",&a[i]);
}
答案 1 :(得分:2)
快速解决问题的方法:scanf("%d \n",&a[i])
-> scanf("%d",&a[i])
此外,请记住始终检查scanf
是否有错误。可以这样完成:
if(scanf("%d", &a[i]) < 0) {
// Print error message and/or exit or whatever you want to do
} else {
// Do something else
}
从长远来看:
花一些时间研究C语言中的输入法。它们有些棘手,并且存在数百万的陷阱。简而言之,scanf
是提供的一个很好的选择,因为输入的格式与您期望的完全相同。这使它成为用户输入的错误选择,因为用户非常难以预测。
这里是一个值得阅读的链接:
http://www.giannistsakiris.com/2008/02/07/scanf-and-why-you-should-avoid-using-it/
答案 2 :(得分:0)
您可以如下使用:
for(i=0;i<5;i++)
{
printf("enter the %d position on : ",i+1);
scanf("%d",&a[i]);
printf("\n");
}