2017-10-22 3 views
1

이 구조는 학생 레코드입니다.이 파일에는 NamesIDsDataFile과 MarksDataFile이라는 두 파일의 값을 임시로 채우지 만 루프를 실행하면 NamesIDsDataFile의 값만 구조로 들어갑니다. print 문을 while 루프 안에 넣고 문제가 무엇인지 그리고 코드를 실행하면 아무 것도 출력되지 않는지 확인합니다. 누군가 MarksDataFile에서 값을 인쇄하는 방법을 설명해 주시겠습니까? 텍스트 파일은 항상 동일하지가 아니라 아주 잘 구조화 경우 경우에 가지 말았어야,파일에서 값을 코드에 포함하는 방법

while (fscanf(NamesIDsDataFile," %s %s %d ",&(SRecords.FirstNames[0]), 
    &(SRecords.LastNames[0]), &(SRecords.IDNums)) != EOF) 
{ 
     fscanf(MarksDataFile," %d ",&(SRecords.Marks)); 

     printf("%d", SRecords.Marks); 
} 

하지만 :

struct StudentRecord { 

char FirstNames[MAXLENGTH]; 
char LastNames[MAXLENGTH]; 
int IDNums; 
int Marks; 

}; 

    FILE * NamesIDsDataFile; 
    FILE * MarksDataFile; 

    while (fscanf(NamesIDsDataFile,"%s%s%d",&(SRecords.FirstNames[0]), 
    &(SRecords.LastNames[0]), &(SRecords.IDNums)) != EOF) { 

     fscanf(MarksDataFile,"%d",&(SRecords.Marks)); 

     printf("%d", SRecords.Marks); 

    } 

    fclose(NamesIDsDataFile); 
    fclose(MarksDataFile); 
+0

1 단계와 유사한 변수의 변수

  • > 0 번호와 일치하지 않는 경우 :! 'fscanf (...) = EOF' ->'fscanf (...) == 3'입니다. 2 : 샘플 입력, 출력 및 예상 출력 게시. – chux

  • +0

    나는이 파일들을 어딘가에 여는 중이라고 생각 하나? – yano

    +0

    두 파일의 몇 가지 예제 데이터를 보여 주실 수 있습니까? –

    답변

    0

    간단한 방식에 너무 코드에 작은 변화입니다 대신 위의 코드를 사용하십시오. 여기

    그것을 할 수있는 가장 좋은 방법입니다 : 포인터가 파일의 끝에 도달하면,

    • EOF :

      int ret1,ret2; 
      while (ret =fscanf(NamesIDsDataFile," %s %s %d ",&(SRecords.FirstNames[0]), 
      &(SRecords.LastNames[0]), &(SRecords.IDNums))) { 
      
          if(ret == EOF) 
          { 
           break; 
          } 
          else 
          { 
           ret2 = fscanf(MarksDataFile," %d ",&(SRecords.Marks)); 
           if(ret2 == EOF || ret2 == 0) 
           { 
            break; 
           }else 
           { 
            printf("%d", SRecords.Marks); 
      
           } 
          } 
      } 
      
      fclose(NamesIDsDataFile); 
      fclose(MarksDataFile); 
      

      RET는 값이 될 것이다 INT 변수입니다.

    • 0, 입력 된 파일 입력
    +0

    코드에서 실수로 대답을 업데이트했습니다. 이제는 효과가 있습니다. 체크 아웃하고 작동하는 경우 대답으로 선택하십시오 :) –

    관련 문제