我试图将文件的行放入字符串数组的唯一索引中,如下所示:

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/

10-10 11:24