我有一個使用兩個二進制文件的函數void display_a_student()
。首先是一個binary1.dat和和index.dat,其中包含添加到binary1.dat中的每個學生的偏移量。使用Strcmp()和二進制文件的幫助
我想使用索引找到用戶輸入的學生的偏移值,我無法使用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();
}
我確信行:如果(的strcmp(studentNumSearch,FP1 [指數] .studentNum)== 0) 是我要去的地方錯了,因爲我不確定如何在使用指向文件strcmp()函數。 - 編輯相關的代碼。
AFAIK fflush(stdin)是非標準的。有些編譯器支持它,但fflush(stdout)是標準支持的那個函數的調用。您可能必須自己刷新輸入緩衝區。 – jonsca 2011-03-31 12:20:44
我對您的代碼進行了格式化 - 請使用編輯器中的格式按鈕,或下次將所有代碼縮進4格。此外,我會建議剝離示例代碼到儘可能短的代碼片段,該片段仍包含相關行或演示您的問題。代碼越長,人們花時間去閱讀它就越少。 – 2011-03-31 12:22:14
請告訴我們(1)你期望你的代碼做什麼,(2)它做了什麼,(3)你爲什麼認爲它應該做#1而不是#2。噢,(4)爲什麼你認爲問題出在你提到的那一行上,更具體地說是'strcmp'。 – 2011-03-31 12:26:31