如何解决使用双指针,如何用字符串填充2D?
我正在逐行阅读文本文件。将每行放入二维数组。有时该程序可以工作,但是通常2d数组的第一个元素以乱码形式返回,例如:“ W @ ??”。
我看过StackOverflow上的其他示例,看不到这段代码出了什么问题。
int read_file(FILE* file,char ** strings) {
char str[100];
int n = 0;
while(fgets(str,100,file)) {
if(n > 0) {
strings = realloc(strings,(n+1) * sizeof(char));
}
int len = strlen(str);
if (len > 0 && str[len-1] == '\n') {
str[len-1] = '\0';
}
len = strlen(str) +1;
strings[n] = malloc(len * sizeof(char));
strcpy(strings[n],str);
puts(strings[n]); //THIS PRINTS THE CORRECT OUTPUT
n++;
}
puts(strings[0]); //THIS PRINTS GIBBERISH,`W@??
puts(strings[1]);
puts(strings[2]);
return n;
}
int main(void) {
FILE *file;
file = fopen("data.txt","r");
char ** strings = malloc(sizeof(char*));
int n = read_file(file,strings);
fclose(file);
//print_strings(strings,n);
puts(strings[0]); //THIS PRINTS GIBBERISH,`W@??
puts(strings[1]);
puts(strings[2]);
//freeAllocatedMemory(strings,n);
return 1;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。