我在这里要做的是读取一个包含电话号码的文本文件。例如:

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/

10-11 21:54