Выход из программы по нажатию клавиши ESC - C (СИ)
Формулировка задачи:
Здравствуйте! Программа, которая собирает данные и записывает в файл.
Как сделать так, чтобы в любом месте можно было выйти из программы по нажатию клавиши ESC? Как я понял нужно создавать поток, в котором постоянно проверяется нажата ли клавиша ESC и если нажата то завершается процесс. Только как это все организовать не понимаю.
#include <stdio.h> #include <conio.h> #include <locale.h> #include <string.h> #include <stdlib.h> char Bar[14], bar[19], Name[100], Prace[11]; FILE *basa; char cContinue( void ) { char key; printf( "Нажмите любую клавишу чтобы продолжить или ESC для выхода\n" ); key = getch(); return key; } int main( void ) { int i, b; setlocale( LC_ALL, "RUS"); do { b = 0; printf( "Введите штрих-код: " ); scanf( "%14s", Bar ); fflush( stdin ); if( Bar[13] != 0 ) { b = 1; Bar[13] = 0; } for( i = 0; i < 13 && b != 1; i ++ ) { if( Bar[i] < '0' || Bar[i] > '9' ) { b = 1; break; } } if( b == 1 ) { printf("Ошибка! Некорректный штрих-код!\n"); continue; } basa = fopen( "BarDB.txt", "r" ); while( fscanf( basa, "%s", bar ) > -1 ) { if( strcmp( Bar, bar ) == 0 ) { printf( "Такой Штрих-код уже есть!\n" ); b = 1; break; } fscanf( basa, "%s" ); fscanf( basa, "%s" ); } fclose( basa ); if( b == 1 ) continue; printf( "Введите название товара: " ); fgets( Name, 99, stdin ); fflush( stdin ); for( i = 0; i < 99 && Name[i] != 0; i++ ) { if( Name[i] == '\n' ) { Name[i] = 0; break; } } do { i = 0; b = 0; printf( "Введите цену на товар: " ); scanf( "%10s", Prace ); fflush( stdin ); while( Prace[i] != 0 ) { if( Prace[i] < '0' && Prace[i] != ',' || Prace[i] > '9' ) { printf("Ошибка! Некорректная цена!\n"); b = cContinue(); break; } i++; } } while( b != 27 && b != 0 ); if( b == 27 ) break; basa = fopen( "BarDB.txt", "a" ); fprintf( basa, "%s\t", Bar ); fprintf( basa, "%s\t\t", Name ); fprintf( basa, "%s\n", Prace ); fclose( basa ); } while( cContinue() != 27 ); return 0; }
Решение задачи: «Выход из программы по нажатию клавиши ESC»
textual
Листинг программы
printf( "Введите штрих-код или "\s"\ для окончания работы: " ); scanf( "%14s", Bar ); if(Bar[0]=='s' && Bar[1]==0) { // Оформить окончание работы. }
Объяснение кода листинга программы
- Программа запрашивает у пользователя ввод штрих-кода или
s
для окончания работы. - Пользователь вводит штрих-код или
s
. - Программа проверяет введенные данные. Если первый символ равен 's' и второй символ равен 0, то выполняется код в блоке if.
- В блоке if выполняется оформление окончания работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д