Я пытаюсь сделать программу, которая читает положительные цифры с разделителями-разделителями в C и дает сообщение об ошибке ЛЮБОЙ другой формат ввода.Как читать разделенные пробелом цифры 0-9 в C?
Например, следующие входы являются правильными:
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
7 6 5 4 3
1 2 3
...
Для всех остальных входов, программа должна прекратить и сообщение об ошибке должно быть напечатано. Например:
0 1,2 3 4-5 67 89
0a2b3c4d5e6f7g8h9i
...
Вот моя попытка:
...
int inputArr[999];
int length = 0;
char c = getchar();
while (c != '\n') {
if (isdigit(c)) {
inputArr[length] = c - '0';
length++;
} else {
printf ("Wrong Input Format!\n");
}
c = getchar();
if (c != ' ') {
printf ("Wrong Input Format!\n");
} else {
continue;
}
}
...
, но это дает сообщение об ошибке, даже если вход является правильным.
Update:
Когда я введите следующее:
0 1 2 3 4 5 6 7 8 9
Я ожидаю, что программа не дает мне никаких сообщений об ошибках, но я получаю ровно 10 сообщений об ошибках (После удаления строки exit(1);
) , Я предполагаю, что это одно сообщение об ошибке для каждого символа после 1 и (это 9 сообщений) и 1 сообщение для символа '\ n' в конце.
Спасибо, но не совсем: Цель названия в основном заключается в листинге на индексе, чтобы привлечь внимание людей. Но тело поста должно быть также вопросом. Он должен точно указать, что вы ожидали, что пошло не так, и ваш конкретный вопрос был как можно сужен. Не просто спросите «почему это не работает», а спросите конкретно «почему X не делает Y по Z, когда руководство утверждает, что X должен делать Y (цитата)» и т. Д. –
Ваша логика кажется довольно сломанной , У вас есть все эти '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '', ' Таким образом, вы в принципе не имеете возможности обнаружить ошибку в нужное время. И ваше обнаружение новой строки также является неполным. И у вас нет механизма для обнаружения конца ввода. –
Я добавил else заявления, но я до сих пор не понимаю, почему я получаю сообщение об ошибке, когда ввод находится в правильном формате. – user6005857