2013-12-11 2 views
0

C 프로그램을 작성하면 도움이 될 수 있습니다. 이름, surename, 성별 등 사용자 정보를 채울 수있는 데이터 구조 만들기 및 모든 텍스트 파일로 이동합니다. 한 가지를 제외한 모든 것이 잘 작동합니다. 우리는 사용자가 그렇게 원한다면 그는 단지 예를 들어, 학사 학위에 대한에 등록 표시하도록 선택할 수있는 지점에 도달 할 때까지 주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 모드에서 파일을 열었으므로 읽을 내용이 없습니다. 또한 또한

... 우리는 파일 형식을 잘 모르겠지만, 코드에서 만들어진 가정은 파일에서 구조를 작성하여 일치하지 않는 것 :

  • fpNULL 될하지 않습니다 일단 while 루프에 있으면 파일이 닫히지 않습니다.
  • 루프 내부의 파일에 전체 구조체를 쓰려고합니다 (읽는 동안)
  • education1eductaion1은 무엇입니까? 아마 실제 코드를 붙여야합니다.
관련 문제