2014-10-07 4 views
0

Я только начал программирование на С, и я новичок. Я сделал некоторые исследования, но, к сожалению, не смог найти ничего о своей проблеме. Невозможно использовать массив 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). Извините за мой английский, спасибо.

+0

Я удивлен, что это скомпилировано, так как в C функция не может быть похоронена внутри другой функции. И.Е. переместите функцию pstr до строки int main (void) <- обязательно включите «void» – user3629249

ответ

3

Ваш формат scanf() неправильный.

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

Вы должны иметь один %для каждого преобразования, поэтому 9 в вашем случае. Это означало бы, что for бессмысленно.

Кроме того, вы должны убедиться, что scanf() возвращает ожидаемое количество успешных конверсий, иначе вы не можете зависеть от переменных, имеющих правильные значения.

+0

Спасибо, но когда я добавлю еще 8% s, он печатает второй вход минус 1. – HalilM

+0

@HalilM, Umm, не должен '% s' быть'% d'? –

+0

Я попытался сделать это множественным, так что да, это% d :). – HalilM

0

объявить цифры, как:

int n[9]; 

вместо

int n1, n2, n3, n4, n5, n6, n7, n8, n9; 

Затем с помощью цикла, как:

for(i=0; i < number; i++)           
     scanf("%d", &n[i]); 

Кроме того, перед использованием зсапЕ, fflush выходной буфер,

fflush(stdout); 
+2

OP сказал: «Не могу использовать массив BTW, поэтому я его не использую». – usr2564301

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

Хотя лучшим способом было бы использовать массив и петлю. Поскольку вы новичок, я не думаю, что вы еще об этом знаете. Используйте это на данный момент.

Смежные вопросы