В моей программе есть небольшая проблема.Корпус выключателя не работает должным образом в C
Когда я нажимаю 2 или 3 или 4, он будет отображаться правильно, но после этого, когда I нажмите a или b или c и т. Д., Он отобразит предыдущий результат вместо того, чтобы печатать параметр Неверный.
Как это исправить?
#include <stdio.h>
#include <string.h>
typedef struct vehicle
{
char name[100];
char lice_no[25];
int vehicle_type;
char cmpny_name[100];
int menu_year;
}record;
int main(void)
{
int i,choice;
FILE *fp1,*fp2;
char oname[100];
record det,det1;
int recsize;
char c;
fp1 = fopen("record.dat" , "r+");
if(fp1 == NULL)
{
fp1 = fopen("record.dat" , "w+");
if(fp1 == NULL)
{
printf("error in opening file : \n");
return -1;
}
}
recsize = sizeof(det);
do
{
printf("\t\"enter the choice\"\n");
printf("1 : adding the record\n");
printf("2 : delete the record\n");
printf("3 : editing the record\n");
printf("4 : display the record\n");
printf("5 : exit the program\n");
fflush(stdin);
scanf("%d" , &choice);
scanf("%c" , &c);
switch(choice)
{
case 1 :
{
printf("In this add logic\n")
break;
}
case 2 :
{
printf("In this case delete logic\n");
break;
}
case 3 :
{
printf("In this case edit logic\n");
break;
}
case 4 :
{
printf("display logic\n");
break;
}
case 5 :
{
printf("exit logic\n");
break;
}
default :
{
printf("\"Invalid option\"\n");
break;
}
}
}
while(1);
return 0;
}
'scanf ("% c ", &c);' Что такое thi для? Вы никогда не используете его. – ArjunShankar
'fflush (stdin);' вы * не можете * сделать это. 'fflush' не для потоков INPUT. Вы не можете «промывать» поток INPUT. 'fflush' для потоков OUTPUT (например, чтобы убедиться, что все, что вы печатаете, отправляется на терминал) – ArjunShankar
На самом деле код работает как ожидалось, пока вы добавляете'; 'после строки' В этой логике добавления '. –