Выход из программы по нажатию клавиши 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) {
    // Оформить окончание работы.
}

Объяснение кода листинга программы

  1. Программа запрашивает у пользователя ввод штрих-кода или s для окончания работы.
  2. Пользователь вводит штрих-код или s.
  3. Программа проверяет введенные данные. Если первый символ равен 's' и второй символ равен 0, то выполняется код в блоке if.
  4. В блоке if выполняется оформление окончания работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы