我只是自己做一些額外的工作,試圖更好地掌握C中的多維字符串數組,例如數組[3] [5] = {「apple」, 「房子」, 「卡車」}。我有一個測試文件,裏面填充了很多不同長度的單詞,並且想用這些不同的單詞填充字符串數組。我使用動態分配來提供內存空間,打開文件以及使用fgets來獲取每個單詞,因爲每個單詞都在一個新的行中。我將這個單詞保存到數組中的新位置,然後打印它以檢查它是否已保存。他們應該打印字樣,這讓我相信他們正在被儲存,但是然後我得到了一個seg故障。任何人都可以向我解釋爲什麼發生這種情況?C多維字符串數組在C
文本文件和形式I具有它的樣品中是(無字之間的空行:
魅力
女巫
附魔
濫用
Mitch
Mitc地獄
斜切
減輕
減輕
減輕
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WORDS 50
#define LETTERS 15
int main(int argc, char *argv[]) {
int i;
char **array;
FILE *file1;
char string[15];
array=(char **)malloc(LETTERS*sizeof(char*));
for (i=0;i<WORDS;i++) {
array[i]=(char *)malloc(LETTERS*sizeof(char));
}
if (argc != 2) {
printf("\nERROR: Wrong number of arguments entered\n");
return -1;
}
file1=fopen(argv[1],"r");
if (file1==NULL) {
printf("\nERROR: File 1 not found\n");
return -1;
}
for (i=0;i<=WORDS;i++) {
fgets(string,LETTERS,file1);
array[i][0]=*string;
printf("%s",string);
}
return 0;
}
'陣列[I] [0] = *串;''到的strcpy(陣列[I]中,字符串);'。 – chux
僅供參考 - [我投出malloc的結果嗎?](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) – crashmstr