gpt4 book ai didi

c - 尝试从文本文件读取数据时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:40 25 4
gpt4 key购买 nike

我正在尝试从文本文件中读取数据,并且我正在尝试将文本的每一行放入指向 char 的指针中。我创建了 char* ligne[nl];,其中 nl 是文本行数。

问题是,当我尝试打印文本的每个 ligne[] 时,我发现 ligne 值只有最后一行,而不是所有的文本行。看一下代码:

首先我的文件文本包含这些行:

mama
kaka
sasa

我正在使用 CodeBlocks C,代码是:

int main(void) {
int i=0 ,k;
char *ligne[3] = {NULL}; // three char pointer that take each ligne
char word[25] = "";

FILE* file = fopen("dico.txt", "r");

if(file != NULL){
while (fgets(word, 25, file) != NULL ){
ligne[i] = word;
i++;
}

// print each ligne of the file text
for( i =0 ; i < 3 ; i++){
printf("%s" , ligne[i]);
printf("\n");
}
}
return 0;
}

打印ligne[i]的结果是:

sasa
sasa
sasa

代替:

mama
kaka
sasa

我做错了什么?

最佳答案

问题是您要使 ligne 数组中的每个索引都指向 word 数组。因此,当您完成 fgets while 循环时,所有索引都将指向单词数组中的数据,即 sasa(因为这是放入单词数组的最后一个单词,即您覆盖了其他单词) .一个可能的解决方案是声明你的 ligne 数组如下:

char ligne[4][25]

然后这样调用 fgets :

fgets(ligne[i], 25, 文件)

在 while 循环的每一轮。

关于c - 尝试从文本文件读取数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33818238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com