對,我有這樣的代碼: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在Ubuntu
dlev已經知道你的代碼有什麼問題。你沒有向我們展示整個片段,所以我們不得不猜測一點。海灣合作委員會可以幫助你在這裏。編譯啓用警告。一組不錯的選項,IMO,就是'''gcc -Wall -pedantic'''。 – 2011-05-12 18:23:48
@Heath Hunnicutt - 是的,那些似乎是最小的實際選項 – 2011-05-12 18:38:00
@Heath:更妙的是增加了GCC標誌'-std = c89'(或相當於當前'-ansi')或'-std = c99'以防止缺省情況下啓用的gnu-isms(即使帶有pedantic) – pmg 2011-05-12 18:42:42