我试图将文件的行放入字符串数组的唯一索引中,如下所示:
char *fileString[newline_count];
rewind(makeFile);
int i;
int i2 = 0;
int i3 = 0;
char temp[500];
for(i = 0; i < string_size; i++){
temp[i3] = fgetc(makeFile);
if(temp[i3] == '\n'){
temp[i3] = '\0';
fileString[i2] = temp;
i2++;
i3 = 0;
}else{
i3++;
}
}
for(i = 0; i < newline_count; i++){
printf("%s %c", fileString[i], '\n');
}
最后一个for循环只打印出fileString的内容,fileString是字符串数组。i是第一个for循环的索引,i2是fileString的索引,i3是temp char的索引,一旦将一行的内容放入temp,temp char将存储到fileString中。
我想知道为什么fileString的内容是
最后一行一遍又一遍。last for循环只打印出文件中最后一行的行数。我完全迷路了,而且很累,所以我在这里寻求帮助。我将非常感谢。
最佳答案
在每次迭代中,缓冲区temp
被分配到fileString
中的每个位置。换句话说,数组中的所有条目都指向同一个缓冲区(它包含最后读取的行)。
一个“快速”解决方案是将该行更改为:
fileString[i2] = strdup(temp);
如果你这样做,你需要释放每个入口,以避免泄漏。
关于c - C获取文件行并将其放置在字符串数组的单独索引中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19990812/