2011-09-26 9 views
1

여기 내 코드입니다. 나는 그것이 나에게 세그먼트 오류를 ​​제공하지 않습니다 마지막 printf 명령을 제공하지 않습니다,하지만 난 그것을 printf을 주면 그것이 나에게 독방 감금 오류를 제공하는 경우 지금분할 오류

#include<stdio.h> 

int main(int argc,char** argv) 
{ 
    FILE* fp; 
    fp=fopen(argv[1],"r"); 

    struct element{ 
     int value; 
     char activity; 
    }; 

    typedef struct element element; 
    element a; 
    printf("%d",feof(fp)); 
} 

. 왜?

나는 지금 내가이 .txt 내 메이크 내 입력 파일에 추가 한 또 다른 문제

을 가지고, 내 이전 문제에 대한 답변을 얻었다. 이제 또 다른 문제가 있습니다. on 명령은 오류를 발생시킵니다.

0make: *** [a.out] Error 1 

왜?

+0

는 fopen() 실패를하고 그래서 0을 반환? –

답변

3

fopen의 반환 값을 확인하십시오 (물론 의 반환 값을 확인하십시오. 호출). 파일을 열지 못했습니다.

+0

예 .txt 파일이 메이크 파일에 추가되었습니다. 이제 다른 문제가 있습니다. on 명령 'make' 오류가 발생합니다. 0make : *** [a.out] 오류 1 이유는 무엇입니까? – Kraken

1

파일을 명령 줄 인수에 지정하지 않았거나 거기에 지정한 파일을 어떤 이유로 열지 못했기 때문에 파일을 지정하지 않았습니다. 이 경우 fopenNULL을 반환하고 NULLfeof으로 전달하면 프로그램이 충돌합니다. 특히 함수가 NULL을 반환 할 수있는 경우 반환 값과 오류 코드를 확인해야합니다.

올바른 코드는 다음과 같이 보일 수 있습니다 :

#include <stdio.h> 
#include <stdlib.h> 

int main (int argc, char *argv[]) 
{ 
    FILE *fp; 

    if (argc < 2) 
    { 
     fprintf (stderr, "Please specify the file name.\n"); 
     return EXIT_FAILURE; 
    } 

    fp = fopen(argv[1], "r"); 

    if (fp == NULL) 
    { 
     perror ("Cannot open input file"); 
     return EXIT_FAILURE; 
    } 

    printf ("%d\n", feof (fp)); 
    return EXIT_SUCCESS; 
} 
+0

친절하게 대답을 확인하십시오. 답변 해주셔서 감사합니다. – Kraken