2013-12-11 134 views
0

構建一個C程序,並且可以使用有用的手。建立一個數據結構,我可以在其中填寫用戶信息,如姓名,姓名,性別等,並且全部進入文本文件。除了一件事以外,一切都很好。主要查找txt文件中的字符串

int main() 
{ 
FILE *fp; 
struct info 
{ 
    char name[15]; 
    char surename[15]; 
    char gender[10]; 
    char education[15]; 
} info; 

char education1[50]; 

部分則進入代碼的非重要組成部分,直到我們得到的地步,如果用戶要求這樣做,他可以選擇僅顯示與註冊例如學士學位。這是我已經做到了多少,但它不起作用。有任何想法嗎?

FILE *fp=fopen("info.txt", "a"); 
    while(fp!=NULL && fgets(education1, sizeof(eductaion1),fp)!=NULL) 
    { 
       if(strstr(education1,"bachelors")) 
       fprintf(fp, "\n%s %s %s %s", 
       sem.name, 
       sem.surename, 
       sem.gender, 
       sem.education,); 
       if(fp!=NULL) fclose(fp); 

    } 
+0

你打開追加文件,但嘗試讀取和寫入它,也試圖關閉循環中的文件 –

+0

什麼是'surename'? –

+0

如果你想從文件讀取數據,你爲什麼試圖以附加模式而不是讀取模式打開它,並嘗試通過'fprintf()'方法在其中添加新數據?由於您使用'fclose()'方法,因此在讀取第一行文件後,您將無法從文件中檢索數據。 –

回答

2

已打開在append模式下的文件,所以會出現什麼閱讀。此外,我們不知道的文件格式,但在你的代碼所做的假設似乎並不匹配寫入結構出來的文件...

另外:

  • fp永遠不會成爲NULL一旦你在while循環中,所以文件永遠不會被關閉。
  • 您正試圖整個結構寫入循環內的文件(如您正在閱讀的話)
  • 什麼是education1eductaion1?你應該粘貼你的真實代碼。