2014-09-28 31 views
-4

我無法從創建的文件中讀取數據。這是一個非常簡單的代碼,我簡直不明白爲什麼它不起作用。我剛剛轉向Mac並安裝了開發人員命令行工具。Mac上的C中的分段錯誤11

我的代碼是:

int main() 
{ 
    FILE *fp; 
    int lines = 0; 
    char *data; 
    data = (char *)malloc(1000); 
    data = NULL; 

    fp = fopen("1.txt", "r"); 
    while (fgets(data, 1000, fp) != NULL) 
    { 
     printf("%s\n", data); 
     lines++; 
    } 
    printf("Lines = %d\n", lines); 
    free(data); 
    fclose(fp); 
    return 0; 
} 
+1

你應該做一些調試。 – 2014-09-28 20:31:06

+0

你的數據迷路了嗎? – 2014-09-28 20:31:43

+0

爲什麼**'11' **? – Deduplicator 2014-09-28 20:32:26

回答

1

您的data分配空間,然後迅速地漏呢。

char *data; 
data = (char *)malloc(1000); 
data = NULL; 

然後,您使用fgets()NULL指針,這會導致不確定的行爲。

fgets(data, 1000, fp) 

也許你應該刪除這行代碼?

data = NULL;