无法获得我想要的输入

时间:2014-10-07 12:29:11

标签: c function input

我刚刚开始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)。抱歉我的英文,谢谢。

3 个答案:

答案 0 :(得分:3)

您的scanf()格式字符串错误。

scanf("%d", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);

每次转化必须有一个% ,所以你的情况就是9。这意味着for毫无意义。

此外,您必须检查scanf()是否返回预期的成功转换次数,否则您无法依赖具有适当值的变量。

答案 1 :(得分:3)

 scanf("%d %d %d %d %d %d %d %d %d ", &n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9);

虽然更好的方法是使用数组和循环。既然你是新手我也不认为你知道它。暂时使用它。

答案 2 :(得分:0)

将数字声明为:

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(stdout);