我只是自己做一些额外的工作,试图更好地掌握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