2015-10-29 6 views
0

Итак, у меня проблемы с управлением массивами/циклами (довольно новыми для C). Мне нужно спросить у пользователя, сколько типов красок они хотят ввести, затем три раза брать данные для каждой краски и выводить все данные в конце. Кажется, мне все в порядке с получением всех данных от пользователя, в основном это вывод всех данных в конце, с которыми я борюсь. Я не ищу быстрого решения этой конкретной проблемы, так как хочу узнать, как работают массивы/циклы при выводе данных (если это имеет смысл).Нужно взять пользовательский ввод и вывести его все в конце

#include <stdio.h> 

int main(void) 
{ 

    int amount, count; 
    int result1, result2, result3; 
    char paintname; 

    printf("Please enter how many paints you want to compare:\n"); 
    scanf("%d", &amount); 

    for (count = 1; count <= amount; count++) 
    { 
     printf("Please enter the name of paint number %d:\n", count); 
     scanf("%s", &paintname); 

     printf("Please enter the first result of paint number %d:\n", count); 
     scanf("%d", &result1); 
     printf("Please enter the second result of paint number %d:\n", count); 
     scanf("%d", &result2); 
     printf("Please enter the third result of paint number %d:\n", count); 
     scanf("%d", &result3); 
    } 


    return 0; 
} 
+0

Первая ошибка очень очевидна, вы не проверяете возвращаемое значение 'scanf()'. –

+0

Что вы пробовали? В чем проблемы, с которыми вы сталкиваетесь? Я думаю, вам нужно также пересмотреть свое понимание массивов, так как вы фактически не используете какой-либо код в этом коде. – ajshort

+0

Что вам нужно, это массив структур. Они описаны в разделе 3 главы 6 в K & R 2nd edition. Поскольку K & R немного устарел, вы можете рассмотреть любую из [этих прекрасных книг] (http://stackoverflow.com/a/562377/3386109). – user3386109

ответ

0

Вы paintname объявлен char. Это означает, что он содержит только один символ. Вам это нужно держать несколько символов, т.е. char массив:

char paintname[50]; 
... 
scanf("%s", paintname); 
+0

Выпуск ведущего пространства? –

+0

Предложите ''% 49s''. – chux

1

Если вы ищете, как хранить все результаты, вы должны использовать массив для каждого результата (и имя), что является достаточно большим, чтобы вместить все пользовательские входы. Этот массив имеет динамический размер (т. Е. Он определяется во время выполнения, когда пользователь вводит его), поэтому он должен быть динамически распределен с использованием malloc()/calloc(), а затем free() 'd позже.

+0

Я посмотрел, что такое malloc, calloc и free do, и я понимаю их общее понимание, но мы еще не рассмотрели их в моем курсе, но я не думаю, что они ожидали использовать их еще. Я добавил массив в 'paintname [101]' и добавил цикл for 'for (i = 1; i Charley1601

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