У меня есть программа, которая имеет следующие цели:Scanf входа и другие вопросы
читать ввод в массив
Чтения до EOF
Записи количество успешных (цифровых) входов
Я начинаю с инициализации:
int array[200];
int size = sizeof(array)/sizeof(int);
int num_inputs = 0;
Затем вызвать функцию void input(int * array, int size, int *num_inputs)
input(array, size, &num_inputs);
_
void input(int * array, int size, int *num_inputs) {
int i = 0;
printf("Enter numbers:\n");
while(scanf("%d", &array[i]) != EOF) {
i++;
*num_inputs++;
if (i == (size-1))
break;
}
}
num_inputs не работает. От отладки (или того, что я знаю об отладке) num_input идет от 0 до некоторого случайного числа. Что я делаю не так? Что-то с указателями?
Предположим, что я ввожу
5 9 8 8 3 4
- будет ли сканировать f как 6 входов? Будет ли num_input быть 6? Если нет, как мне это достичь? Я хочу, чтобы иметь возможность написать5 6 3 6
Newline4 9 3
и программа, чтобы иметь возможность интерпретировать его как писать 7 вещей в массив и num_input быть 7.
Спасибо заранее.
1) '* num_inputs ++;' -> '++ * num_inputs, или' (* num_inputs) ++; ' – BLUEPIXY
Примечание: 'array [199]' не используется. Я бы ожидал 'while (i
chux
'scanf()' может возвращать EOF, но это не является важным критерием для проверки. Скорее проверьте, сколько из «спецификаторов формата» в строке формата были успешно введены/преобразованы. Для вызова 'scanf()' в опубликованном коде возвращаемое значение для проверки равно 1, а не EOF. – user3629249