2017-10-18 6 views
-1

파일에 일부 데이터를 입력하고 콘솔에서 읽고 인쇄하려고합니다. 출력은파일에서 잘못된 출력

WQ :

h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h 

문제가 무엇입니까

fp=fopen("user1","w+"); 
    char line[1000]; 
    char *c; 
    //write on file 

    while(1) 
    { 
     fgets(line,sizeof(line),stdin); 
     if(strcmp(line,":wq\n")==0) //input ends when user enters :wq 
      break; 
     else 
      fputs(line,fp); 
    } 
    //read from file 
    fflush(stdin); 

    while(1) 
    { 
     c=fgetc(fp); 
     if(c==EOF) 
      break; 
     else 
      printf("%ch",c); 
    } 

I 입력

bjsa

으로 데이터 : 여기

내 코드입니다 ?

+0

, c)', 그래서 당신은 출력에 많은 h를 가져옵니다. – Milack27

+0

첫 번째 문제는 전체 코드를 게시하지 않았다는 것입니다. 좋은 대답을 원한다면 우리를 추측하지 마십시오. –

+0

위의 문제와 관련된 코드의 일부를 게시했습니다. 전체 코드를 게시하면 실제 문제의 초점이 흐트러지고 문제가 해결됩니다. –

답변

1

나는 두 가지 문제

1) fgetc는 문자 지점에 할당을 참조하십시오. 그건 잘못된 것입니다. 그것은해야한다 int로

2) 파일을 작성 후, 당신은 그것을 닫아야하고 읽기 위해 열

뭔가처럼

: 난 당신이`의 printf ("%의 C"를 의미 생각

fp=fopen("user1","w+"); 
    char line[1000]; 
    int c;    // notice ...... 

    //write on file  
    while(1) 
    { 
     fgets(line,sizeof(line),stdin); 
     if(strcmp(line,":wq\n")==0) //input ends when user enters :wq 
      break; 
     fputs(line,fp); 
    } 
    fclose(fp); 


    //read from file 
    fp=fopen("user1","r"); 
    while(1) 
    { 
     c=fgetc(fp); 
     if(c==EOF) 
      break; 
     printf("%ch",c); 
    } 
    fclose(fp); 
+0

'fgets()'의 반환 값을 확인해야합니다. 무한 루프는 피해야합니다. 첫 번째 루프 조건에서'fgets()'를 테스트하고, 두 번째 루프에서 할당과 비교 결과를 테스트한다. –

+0

파일을 닫고 여는 것이 도움이되었습니다. 파일 쓰기가 마지막 쓰기 위치까지 포인터를 이동한다는 것을 잊어 버렸습니다. 왜 이렇게 많은 'h'를 가져 왔는지 설명합니다. –

+0

왜 int 타입을 c로 사용했는지 알 수 있습니까? –