我是stackoverflow
的新用戶。我用c寫了這段代碼,我沒有問題,輸出也是正確的。如何使用fscanf讀取c中的文件(分段錯誤)?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str[10];
FILE * fp;
fp = fopen ("file.txt", "w+");
fputs("We\nare\nin\n2016", fp);
rewind(fp);
fscanf(fp, "%s", str[0]);
fscanf(fp, "%s", str[1]);
printf("Read String1 |%s|\n", str[0]);
printf("Read String2 |%s|\n", str[1]);
fclose(fp);
return(0);
}
但是當我使用char * str [15]而不是char * str [10]時,結果是分段錯誤。哪裏不對?
「str」數組中的每個指針在哪裏?僅僅因爲具有*未定義行爲的程序似乎可行,並不意味着它是正確的。 –
爲什麼這是正確的str [10]?我也初始化了str [15],但沒有開始工作 –
它不適用於例如'char * str [10]',這似乎是純粹的運氣似乎工作(好運或壞運氣是一個觀點問題)。它似乎*工作,你仍然會看似隨機覆蓋一些內存。請記住,不確定行爲的一個可能症狀是它實際上可行,不幸的是。 –