首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用C将文件内容赋值给变量?

使用C将文件内容赋值给变量?
EN

Stack Overflow用户
提问于 2018-09-27 03:04:10
回答 2查看 833关注 0票数 -1

如何使用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;
 }
EN

回答 2

Stack Overflow用户

发布于 2018-09-27 06:33:29

问题是,您要求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作为参数,并返回文件中的下一个字符:char c = fgetc(fptr);

票数 1
EN

Stack Overflow用户

发布于 2018-09-27 06:56:44

没有什么神奇的方法可以做到这一点。YOu必须自己干重活

如果你可以像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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52524495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档