使用C将文件内容分配给变量?

时间:2018-09-26 19:04:10

标签: c

如何使用C读取文件并将文件内容分配给变量? 例如:program.txt文件包含这样的值

r1 = 2r2 = 4r3 = 5r4 = 6

我想读取program.txt文件并将r1,r2,r3,r4值分配给变量。 我尝试使用此示例程序,但它为fgetchar()返回了太多参数。

#include <stdio.h>
int main()
{
  int n;
  char c;
  FILE *fptr;
   if ((fptr=fopen("E:\\program.txt","r"))==NULL){
       printf("Error! opening file");
   }

   fscanf(fptr,"%d",&n);
   fgetchar(fptr);
   printf("Value of n=%d",n);
   printf("Char is = %c", c);
   fclose(fptr);
   return 0;
 }

2 个答案:

答案 0 :(得分:1)

问题是您要求fscanf读取一个整数:fscanf(fptr, "%d", &n); 但是文件中的第一个字符是字母。因此fscanf找不到int,因此它失败并在那里停止。

解决方案是像这样将您的分配写为每行:

r1=1
r2=2
r3=3

然后,您要求fscanf匹配行并代替要读取的数字以放置%d,因此它看起来像这样:fscanf(ftpr, "r%d=%d\n", &n, &var);

顺便说一句:fgetchar不存在,因此您的程序无法实际编译,但是您可以使用:fgetc,它将FILE作为参数并返回文件中的下一个字符:char c = fgetc(fptr);

答案 1 :(得分:1)

没有魔术方法可以做到这一点。你必须自己做繁重的工作

如果您可以重新组织文件,使其像Lavigne958所示

那你需要做

int val[10];
while(!feof(fptr))
{
  fscanf(ftpr, "r%d=%d\n", &n, &var);
  val[n] = var;
}

如果必须将它们分别称为r1,r2,r3等...

int *val[10];
val[1] = &r1; // yes I know I missed out [0]
val[2] = &r2;
...

while(!feof(fptr))
{
  fscanf(ftpr, "r%d=%d\n", &n, &var);
  *(val[n]) = var;
}