2012-04-11 197 views
0

我試圖從文件yh.dat中獲取內容,其中包含類似「456 78921」的文本,而另一些是C.But,當我嘗試調試代碼時,FILE指針不是NULL(0x00428af8)和_ptr和_base是NULL(0x000000)。他們說「CXX0030:Error:expression can not be evaluate」。如何解決?爲什麼FILE指針不能讀取文件中的內容?

int main(){ 
    FILE *fp=NULL; 
    fp=fopen("yh.dat","rb"); 
    if(fp==NULL) 
    { 
     printf("error"); 
    exit(0); 
    } 
    return 0; 
} 
+2

您的問題「如何解決」意味着存在問題。 FILE對象的內容是未指定的,並且從一個實現到另一個實現是不同的。如果'fp'上的操作按照他們的設想工作,沒有理由擔心'fp - > _ ptr' * et al *(除了閒置的好奇心,當然)。 – 2012-04-11 03:48:11

回答

2

要允許您更改文件緩衝,C不會爲文件設置緩衝區,直到您發出第一次讀取爲止。因此,在嘗試至少一次讀取之前,FILE *指向的任何結構的成員都處於半初始化狀態是正常的。

您是否嘗試過只讀數據以查看它是否有效?

+0

是的,我試過了。 (fp,「%d」,num);(fp,「%d」,num); printf(「%d」,num);但它沒有打印任何東西。 \t} – NobToJuneau 2012-04-11 03:48:46

+1

您正在將'num'的*值*傳遞給'fscanf'。它應該怎麼做? – 2012-04-11 03:50:19

+1

@NobToJuneau:它不會阻止你閱讀至少一些東西,但'while(!feof(whatever))'本質上總是錯誤的。我會嘗試一些簡單的,如:'int ch; while((ch = getc(fp)!= EOF)putchar(ch);' – 2012-04-11 03:50:24

相關問題