void display_a_student()
2 つのバイナリ ファイルを使用する関数 があります。まず、binary1.dat と、binary1.dat に追加された各生徒のオフセットを含む index.dat。
インデックスを使用して、ユーザーが入力した学生のオフセット値を見つけようとしています。strcmp() 関数を使用して、入力された値を index.dat ファイルに保持されている値と比較するのに問題があります。
これまでのコードはここにあります。
void display_a_student()
{
struct student aStudent;
char studentNumSearch[11];
int index=0;
int found = false;
fp = fopen("binary1.dat", "a+b");
fp1 = fopen("index.dat", "a+b");
printf("\n\nWhich student are you searching for?");
scanf("%s", studentNumSearch);
fflush(stdin);
while(!found && index < 10)
{
if(strcmp(studentNumSearch,fp1[index].studentNum)==0)
{
found = true;
}
index++;
}
if (found)
{
fseek(fp, fp1[index].offset, SEEK_SET);
fread(&aStudent,sizeof(struct student),1,fp);
printf("\n\nThe student name is %s\n",aStudent.firstName);
}
else
{
printf("\n\nNo such student\n");
}
fclose( fp ); /* fclose closes file */
fclose (fp1);
getchar();
}
次の行は確かです: if(strcmp(studentNumSearch,fp1[index].studentNum)==0) strcmp() 関数の使用中にファイルを指す方法がわからないため、間違っている場所です。- 関連性のためにコードを編集しました。