2016-09-12 60 views
-2

我是新來的c編程。我在c學習指針,我測試了簡單的文件操作。爲了克服覆蓋txt文件中的值。我在全局聲明文件,並在方法內部初始化本地指針地址爲全局指針地址。我的意圖是使用相同的內存位置。通過使用相同的內存位置執行文件操作。請善舉在下面找到我的計劃。不兼容的指針類型的指派[-Wincompatible-pointer-types]

FILE *f;// global pointer. 

void myTest(char* val) { 
    //d is local pointer. 
    FILE *d = fopen("file.txt", "w"); 
     f=&d; 
    if (f == NULL) 
    { 
    printf("Error opening file!\n"); 
     exit(1); 
    } 
    // print the data 
    fprintf(f, "%s\n",val); 

} 

int main(void) { 

    myTest("test"); 
    fclose(f); 
} 

警告:從兼容的指針類型[-Wincompatible指針類型] F =&d分配; 我運行bin文件後,我得到 分段錯誤(核心轉儲)錯誤。

回答

3

dFILE *,所以&dFILE **。這不能被分配到f這是一個FILE *

你想要的是f=d。或者完全擺脫d

f = fopen("file.txt", "w"); 
+0

非常感謝。我明白了。在糾正那個警告消失後。但我有分段錯誤(核心轉儲)錯誤。任何想法 ?謝謝。 –

+0

@waruniguna通過上面的修正以及#include 和#include 代碼可以按預期運行。在覈心轉儲問題中發佈更新的代碼(但保留當前的代碼)。 – dbush