오른쪽, 나는이 코드를 가지고 :fopen은 NULL을 반환하지만 perror는 성공을 인쇄합니까?
if(argc>1){
FILE * pFile = fopen(argv[1],"rb");
perror("");
}else{
FILE * pFile = fopen("hardcoded","rb");
}
if(pFile==NULL){
puts("Unable to open source file");
return -1;
}
을하지만, 나는이 이상한 출력을 얻을 :
Success
Unable to open source file
Weirdlier을, 난 할 경우 :
if(argc>1){
FILE * pFile = fopen(argv[1],"rb");
perror("");
}else{
FILE * pFile = fopen("hardcoded","rb");
}
FILE * pFile = fopen("hardcoded","rb");
if(pFile==NULL){
puts("Unable to open source file");
return -1;
}
하드가 존재하는 경우를, 그것은 모두 잘 작동합니다!
무슨 블레이즈가 의미합니까?
우분투
에서 GCC4로 컴파일하기
dlev는 이미 코드에 무엇이 잘못되었는지 알아 냈습니다. 당신은 우리에게 전체 발췌를 보여주지 않았으므로 조금 추측해야했습니다. gcc가 여기 당신을 도왔을 수도 있습니다. 경고를 사용하여 컴파일하십시오. IMO라는 훌륭한 옵션은'''gcc -Wall -pedantic''입니다. –
@Heath Hunnicutt - 그래, 그것들은 최소한의 실질적인 옵션 인 것 같다. –
@Heath : gcc 플래그'-std = c89' (또는 현재는 -ansi') 또는'-std = c99' (기본적으로 -pedantic을 사용하여) 활성화 된 gnu-isms를 막기 위해 – pmg