我正在尝试从文件中读取一些字符串,并将它们复制到字符串数组中。 我不明白为什么我在出现段错误之前设法正确读取文件中的第一个字符串。我知道文件中的每个字符串最多有 50 个字符。
...
int i = 0;
char s[50];
int N=0;
FILE *fp;
//Figures out how many strings are stored in the file
while(fgets(s, 50, fp)!=NULL){N++}
rewind(fp);
char *strings[N]; //This is the array where I want to store strings
for(i=0;i<N;i++){
fgets(s, 50, fp);
strcpy(strings[i], s);
printf("%s", s );
}
为什么我无法成功地将字符串存储到数组中?
最佳答案
你犯了两个错误:
1-复制字符串时,您必须为目标分配内存,在您的情况下,目标是您尚未为其分配任何内存的字符串[i]
2-您的字符串必须以 null 结尾
这段代码应该可以工作:
#define MAX_STRINGS 100
int i = 0;
char s[50];
int N=0;
while(fgets(s, 50, fp)!=NULL){N++;}
char strings[MAX_STRINGS][50];
rewind(fp);
for(i=0;i<N && i<MAX_STRINGS;i++){
fgets(s, 50, fp);
strcpy(strings[i], s);
printf("%s", s );
}
请注意,如果您不使用 vector ,则必须预先定义数组的大小,基本上数组的大小必须是常量
关于c - 从文件读取字符串并将它们复制到数组中 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939026/