无法获得我想要的输入
问题描述:
我刚开始C编程,我是新手。我做了一些研究,但不幸的是找不到我的问题。不能使用BTW阵列,这就是为什么我不使用它。无法获得我想要的输入
所以,我正在制作一个函数来打印与给定数量一样多的恒星。但功能是打印最后一个输入号码。
#include <stdio.h>
int main(){
void pstr(int *m){
int j;
for(j = 0; j < *m; j++)
printf("*");
printf("\n");
}
int i;
int number = 9;
int n1, n2, n3, n4, n5, n6, n7, n8, n9;
printf("Enter 9 numbers (all less than 50):\n|1-2-3-4-5-6-7-8-9|\n");
printf("|-----------------|\n ");
for(i=0; i < number; i++)
scanf("%d", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);
pstr(&n1);
system("PAUSE");
}
我试图打印第一个输入号码,但是它写了最后一个(n9)。对不起,我的英文,谢谢。
答
您的scanf()
格式字符串错误。
scanf("%d", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);
您必须在您的情况下,一个%
每次转换,所以9。这意味着for
是毫无意义的。
另外,您必须检查scanf()
是否会返回预期的成功转换次数,否则您不能依赖具有适当值的变量。
答
申报号码为:
int n[9];
代替
int n1, n2, n3, n4, n5, n6, n7, n8, n9;
然后使用循环为:
for(i=0; i < number; i++)
scanf("%d", &n[i]);
此外,使用的scanf之前,fflush输出缓冲器,
fflush(stdout);
+2
OP说:“不能使用阵列顺便说一句,这就是为什么我不使用它。” – usr2564301 2014-10-07 12:39:37
答
scanf("%d %d %d %d %d %d %d %d %d ", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);
虽然更好的方法是使用数组和循环。既然你是新手,我认为你还不知道。暂时使用这个。
我惊讶的是,这个编译自C函数不能被埋在另一个函数中。 I.E.将pstr函数移动到行之前int main(void) user3629249 2014-10-08 04:12:34