2017-09-19 17 views
1

터미널에서 파일에 내용을 쓰려고합니다. 파일은 생성 중이지만 내용은 파일에 쓰여지지 않습니다.c에서 파일 처리의이 코드에 어떤 문제가 있습니까?

#include<stdio.h> 
    #include<stdlib.h> 
    #include<math.h> 
    int main(int argc, char *argv[]) 
    { 
     FILE *fp; 
     fp=fopen(argv[1],"w"); 
     char ch; 
     while((ch=getchar())!=EOF) 
     { 
      putc(ch,fp); 
     } 
     fclose(fp); 
     return 0; 
    } 
+1

(!) 참고 : 항상 fopen'와'putc''를 포함하여 I/O 기능의 반환 값을 확인합니다. – user694733

+2

어떻게 EOF 신호를 보내십니까? – user694733

+0

'putc()'를 호출하기 직전에 읽히는 문자를 표시하면 어떻게됩니까? –

답변

5

당신이 EOF (Windows의 Ctrl + Z 및 Linux에서 Ctrl 키 + D)을 신호하지 않는 경우, 루프는 그 신호를 수신 할 때까지 계속 실행됩니다.

프로그램이 실행 중일 때 자신의 눈으로 파일을 읽으려고하면 파일 스트림이 닫히지 않고 (fclose(fp); 실행되지 않음) 파일이 비어있는 것처럼 보입니다. 파일 스트림이 닫힐 때 내용이 표시됩니다.

1

다음 작품 잘 :

#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
int main(int argc, char *argv[]) 
{ 
    FILE *fp; 
    fp=fopen(argv[1],"w"); 
    char ch; 
    while(1) 
    { 
     ch = (char)getchar(); 
     putc(ch,fp); 
     if(ch == '.') break; 
    } 
    fclose(fp); 
    return 0; 
}