Просто C кругом сводит меня с ума - PullRequest
0 голосов
/ 24 ноября 2010

Так что я когда-либо программировал только на с ++, но я должен сделать маленькую домашнюю работу, которая требует использования c. Проблема, с которой я столкнулся, заключается в том, что мне нужен цикл для чтения чисел, разделенных пробелами от пользователя (например, 1 5 6 7 3 42 5), а затем получения этих чисел и заполнения массива.

код, который я написал, таков:

int i, input, array[10];

for(i = 0; i < 10; i++){
scanf("%d", &input);
array[i] = input;
}

EDIT: добавлено определение массива. Любые предложения или советы будут очень признательны.

Ответы [ 4 ]

2 голосов
/ 24 ноября 2010

Независимо от того, что здесь не так, вы должны быстро научиться НИКОГДА не писать код, который не проверяет возвращаемое значение от любого вызова API, который вы делаете.scanf возвращает значение, и вы должны быть заинтересованы в том, что оно говорит.Если вызов не удался, ваша логика другая, да?

Возможно, в этом случае он скажет вам, что происходит не так.Документы: здесь .

Возвращает количество полей, успешно преобразованных и назначенных;возвращаемое значение не включает поля, которые были прочитаны, но не назначены.Возвращаемое значение 0 указывает, что поля не были назначены.

0 голосов
/ 24 ноября 2010

Вам нужны права #include и правильные основные.Следующее работает для меня

#include <stdio.h>
int main(void) {

    /* YOUR CODE begin */
    int i, input, array[10];
    for (i = 0; i < 10; i++) {
        scanf("%d", &input);
        array[i] = input;
    }
    /* end of YOUR CODE */

    return 0;
}
0 голосов
/ 24 ноября 2010

Этот код работает хорошо.

Если ваши числа меньше 10, то вы должны знать, сколько чисел, прежде чем начать читать эти числа, или последнее число должно быть чем-то вроде 0, чтобы завершить вывод, тогда вы можете сделать цикл while(true), но для динамического решения Вы должны прочитать всю строку в строку и затем использовать sscanf для чтения чисел из этой строки.

0 голосов
/ 24 ноября 2010

Я не программист, но я могу предложить алгоритм, который должен использовать scanf ("% s", & str), чтобы прочитать все входные данные в массив char [], затем зациклить его и протестировать с помощью if if текущий символ - это пробел, если он добавлен в массив к предыдущему числу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...