2013-12-11 48 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?你应该粘贴你的真实代码。