Как сделать выход из цикла While при нажатии клавиш Tab - C (СИ)
Формулировка задачи:
Как сделать выход из цикла While(25-35 строки) при нажатии клавиш Tab и продолжить выполнение программы, за ранее спасибо
#include<stdio.h>
#include <string.h>
#include<stdlib.h>
int main (int argc, char* argv[])
{
char FIO[12];
int f,i,l;
FILE*Kursach;
char *fname = "students.xls";
char result_sting[50];
if((Kursach=fopen("students.xls","wb"))==NULL)
printf("File could not be opened\n");
else
{
printf("Vvedite FIO & otsenki po trem predmetam\n");
fprintf(Kursach,"FIO\tFizika\tInformatika\tLogika\n");
printf("FIO:");
scanf("%s",FIO);
printf("\nOtsenka po Fizike:");
scanf("%i",&f);
printf("\nOtsenka po Informatike:");
scanf("%i",&i);
printf("\nOtsenka po Logike:");
scanf("%i",&l);
while(!feof(Kursach)){
printf("Dlya vyhoda nazmite CTRL+C\n");
system("PAUSE");
printf("FIO:");
scanf("%s",FIO);
printf("\nOtsenka po Fizike:");
scanf("%i",&f);
printf("\nOtsenka po Informatike:");
scanf("%i",&i);
printf("\nOtsenka po Logike:");
scanf("%i",&l);
}
fclose(Kursach);
Kursach = fopen(fname,"r");
if(Kursach == 0)
{
printf("File could not be opened '%s'",fname);
return 0;
}
int i=0;
char *real_tail;
while(fgets(result_sting,sizeof(result_sting),Kursach))
{
real_tail="";
if(result_sting[strlen(result_sting)-1] == '\n');
printf("%s%s\n",result_sting,real_tail);
}
fclose(Kursach);
}
system("PAUSE");
return 0;
}Решение задачи: «Как сделать выход из цикла While при нажатии клавиш Tab»
textual
Листинг программы
#include<stdio.h>
#include <string.h>
#include<stdlib.h>
#include<conio.h>
int main (int argc, char* argv[])
{
char act;
char FIO[12];
int f,i,l,k,ch;
FILE*Kursach;
char *fname = "students.xls";
char result_sting[50];
if((Kursach=fopen("students.xls","wb"))==NULL)
printf("File could not be opened\n");
else{
printf("Vvedite FIO & otsenki po trem predmetam\n");
fprintf(Kursach,"FIO\tFizika\tInformatika\tLogika\n");
printf("FIO:");
scanf("%s",FIO);
printf("\nOtsenka po Fizike:");
scanf("%i",&f);
printf("\nOtsenka po Informatike:");
scanf("%i",&i);
printf("\nOtsenka po Logike:");
scanf("%i",&l);
fprintf(Kursach,"%s\t%i\t%i\t%i\n",FIO,f,i,l);
while(!feof(Kursach)){
system("PAUSE");
printf("Dlya vyhoda nazmite CTRL+C\n");
printf("FIO:");
scanf("%s",FIO);
printf("\nOtsenka po Fizike:");
scanf("%i",&f);
printf("\nOtsenka po Informatike:");
scanf("%i",&i);
printf("\nOtsenka po Logike:");
scanf("%i",&l);
fprintf(Kursach,"%s\t%i\t%i\t%i\n",FIO,f,i,l);
printf("Dlya zaverchenia vvoda nazmite ESC\n");
act = _getch();
ch = static_cast<int>(act);
if ( ch == 27)
{
break;
}
}
fclose(Kursach);
Kursach = fopen(fname,"r");
if(Kursach == 0)
{
printf("no file '%s'",fname);
return 0;
}
int i=0;
char *real_tail;
while(fgets(result_sting,sizeof(result_sting),Kursach))
{
real_tail="";
printf("",i++, strlen(result_sting));
if(result_sting[strlen(result_sting)-1] == '\n');
printf("%s%s\n",result_sting,real_tail);
}
fclose(Kursach);
}
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Программа открывает файл
students.xlsв режиме записи (wb). - Пользователю предлагается ввести данные о студенте (ФИО и оценки по трём предметам).
- Данные записываются в файл.
- В цикле while происходит считывание данных от пользователя и запись их в файл.
- При нажатии клавиши Tab происходит выход из цикла.
- Файл закрывается.
- Программа открывает файл
students.xlsв режиме чтения (r). - Если файл не может быть открыт, выводится сообщение об ошибке.
- В цикле while происходит считывание данных из файла и их вывод на экран.
- После завершения чтения файла программа закрывается.