gpt4 book ai didi

c - 逐行读取文件并将其存储到数组中不起作用

转载 作者:行者123 更新时间:2023-11-30 15:31:16 24 4
gpt4 key购买 nike

我想要做的是读取包含电话号码的文本文件。例如:

01011112222
01027413565
01022223333

我想将这些电话号码存储到一个数组中以供以后使用。下面是我的代码:

#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fl = NULL;
char* phoneNums[10];

int i = 0;
fl = fopen("phoneNum.txt", "r");

if(fl != NULL){
char strTemp[14];

while( !feof(fl) ){
phoneNums[i] = fgets(strTemp, sizeof(strTemp), fl);
i++;
}
fclose(fl);
}
else{
printf("File does not exist");
}

return 0;
}

问题在于,每当调用 fgets 时,它都会返回 strTemp 的相同引用。

因此,每次执行循环时,它都会将 phoneNums 数组中的所有值更改为最近的值。

我尝试在 while 循环内声明 char strTemp[14],但没有成功。

此时,我可以尝试什么来解决这个问题?

谢谢。

最佳答案

执行以下更改以获得准确的结果。

将 strTemp 变量更改为指针变量。

 char *strTemp;

在while里面为变量分配动态内存。

 strTemp=malloc(14);
phoneNums[i]=fgets(strTemp,14,fl);

如果您这样做,它将每次创建一个新内存,以便该值存储在不同的位置。所以它不能在同一位置覆盖。

关于c - 逐行读取文件并将其存储到数组中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24927819/

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