我在这里要做的是读取一个包含电话号码的文本文件。例如:
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
数组中的最新值。我试图在
char strTemp[14]
循环内声明while
,但是没有用。在这一点上,我可以尝试解决什么问题?
谢谢。
最佳答案
执行以下更改以获得准确的结果。
将strTemp变量更改为指针变量。
char *strTemp;
在里面为变量分配动态内存。
strTemp=malloc(14);
phoneNums[i]=fgets(strTemp,14,fl);
如果您这样做,每次都会创建一个新的内存,因此该值将存储在其他位置。因此它不能在同一位置覆盖。
关于c - 逐行读取文件并将其存储到数组中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24927819/