如何使用C中的文件处理验证输入



如何根据学号验证用户输入。

场景:

当用户添加编号为2015的学生时。该项目将不接受另一个学生身份证号码2015。

void add_student(){
int isFound = 0;
FILE *fp;  // to open a file, fopen, fclose.
fp = fopen("record.txt","ab+");  //fopen() function creates the file if it does not exist. --ab+ Open a binary file in append mode for writing at the end of the file.
fflush(stdin);
printf("nStudent Name: ");gets(students.name);
printf("nStudent ID Number: ");scanf("%s",students.ID);
printf("nCourse: ");scanf("%s",students.course);
printf("nYear Level: ");scanf("%d",&students.yrlvl);
printf("nAge: ");scanf("%d",&students.age);

FILE *fa;
fa = fopen("record.txt","r");
while(fread(&students,sizeof(students),1,fa) == 1) // 
{
if(strcmp(students.ID,students.ID) == 0) // Check if the user already in the file
{
isFound = 1;
break;
}
}
if(isFound == 1)
{
printf("nStudent ID Number: %s already in the System. Please select Edit to modify same Student ID", students.ID);

}
else
{
fwrite(&students, sizeof(students), 1, fp); // Add Student 
printf("nAdded Successfully");
}
fclose(fa);


fclose(fp);// close the file

return; 
}

这是文件中的所有数据。在此处输入图像描述

当我添加另一个编号为2016的学生时,这是错误

在此处输入图像描述

您正在使用相同的单个结构缓冲区来收集有关新学生的信息,以便扫描现有学生记录的文件。

也许您可以为每个操作使用不同的缓冲区。

有些问题太简单了。

错误信息应该会让你思考,";2015年是从哪里来的">

最新更新