Прерывание работы программы словом "exit" - C (СИ)
Формулировка задачи:
Добрый день!
Дано задание - ввод 10 целых чисел с клавиатуры.
Провести провекру, чтобы не было введена буква вместа числа.
И если пользвователь вводит слово "exit" программа завершает работу.
Вот что у меня получилось
Помогите вставить прерывание программы словом "exit"!
#include <stdio.h>
#include <stdlib.h>
#define size 10
int main() {
int i,p;
int digit[size];
int k=0;
for ( i=0; i<size; i++){
printf("Vvedite %d. cislo: ", i+1);
fflush(stdin);
if(scanf("%i",&digit[i])!=1){
i=i-1;
puts("Invalid input");}
}
puts("Vi vveli sledujusije cisla: ");
for ( i=0; i<size; i++){
printf("%d\t",digit[i]);}
getch();
}Решение задачи: «Прерывание работы программы словом "exit"»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // функции для работ со строками
#define size 10
int main() {
int i,p;
int digit[size];
int k=0;
char str[0x42];
int ok = 0; // флаг корректности ввода (ok !=0) -> ввод корректен
for ( i=0; i<size; i++){
do {
printf("Vvedite %d. cislo: ", i+1);
fflush(stdin);
ok = scanf("%s",str); // сначала вводим строку
if(ok == 0) {
puts("Invalid input");
return EXIT_FAIL;
}
else {
if (strcmp("exit", str) == 0) { // пользователь ввёл exit
puts("exit now");
return EXIT_SUCCESS;
}
ok = sscanf(str, "%i", digit + i); // получаем число из строки
if(ok == 0){
puts("Invalid input");
}
}
}
while (ok == 0); // пока ввод не корректен
}
puts("Vi vveli sledujusije cisla: ");
for ( i=0; i<size; i++){
printf("%d\t",digit[i]);
}
/*getch();*/
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Объединение
, и позволяет использовать функции для ввода-вывода, работы с массивами и обработки строк соответственно. - Определение размера массива
sizeи его использование в цикле for для перебора элементов. - Объявление переменных
i,p,digit,kиstr. - Использование
okкак флага корректности ввода. - Ввод каждого числа в отдельной итерации цикла for с использованием
do-whileдля повторного запроса ввода при некорректном вводе. - Использование
scanfдля ввода строки иsscanfдля преобразования строки в число. - Проверка введенной строки на равенство
exit. - Если введена строка
exit, выводится сообщениеexit nowи возвращается EXIT_SUCCESS. - Если введенное значение не является числом, выводится сообщение
Invalid input. - После завершения ввода всех чисел выводится сообщение с введенными числами.
- Возвращается EXIT_SUCCESS после завершения программы.
- Комментарий
getch()был оставлен для возможного использования в будущем, но не используется в данном коде.