2012-04-17 2 views
1

주어진 코드가 유효한 파일인지 확인하기 위해 코드를 사용하여 오류 검사를 시도했습니다. 다음 코드 :이 fileIn가 null null가 아닌 것을 말하고 그래서 기본적으로 C에서 argv [i]의 fopen을 검사하는 중 오류가 발생했습니다.

The (null) file doesn't exist 
Output from else if loop 

:

int main(int argc, char *argv[]){ 
    for(int i = 1, i <=argc, i++){ 
     FILE *fileIn = fopen(argv[i],"r"); 
     if(fileIn == NULL){ 
       fprintf(stderr,"The file %s doesn't exist.",fileIn); 
     } 
     else if (fileIn != NULL){ 
      do a bunch of stuff, including printing out values from a struct 
     } 

오전 데 문제는 내가 내 프로그램을 실행할 때 내가 출력으로이를 얻을 수있다 동시에. 그것은 정상적으로 파일을 읽고 그것을해야대로,하지만 그것은 오류를 통해 매번 실행됩니다. argv [i 또는 무엇인가에 대한 포인터를 할당하는 방법이 있습니까? 어떻게 된 일인가?

답변

5

코드가 너무 반복적으로 반복됩니다. <= argc은 실제로 존재하는 것보다 하나 이상의 인수를 평가 중입니다. 그것은해야한다 : 또한

for(int i = 1, i < argc, i++){ 

, 다음과 같이해야합니다 존재하지 않는 파일에 대한의 printf (그것은 이름이 필요) :

fprintf(stderr,"The file %s doesn't exist.",argv[i]); 
4

변경 불평등

for(int i = 1, i <=argc, i++){ 

~

for(int i = 1, i < argc, i++){ 

argc 다음,

변수는 argv 2 [0] 프로그램 이름을
변수는 argv를 = [1] if (fileIn == NULL) 확인하고 있기 때문에, 다시 검사 할 필요가 없습니다, 또한 첫 번째 인수를

을 =; 그냥 else을 사용하십시오.

+0

대단히 감사 드리며 작동하는지 확인해 드리겠습니다. 또한 조건부 테스트를하기 위해 조건부를 넣었습니다. 원래는 다른 테스트 방식과 동일하게 두 가지로 덤핑되는 이유인지 확인하고 싶었습니다. –

관련 문제