首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将值从文件复制到主函数变量,以便可以使用

将值从文件复制到主函数变量,以便可以使用
EN

Stack Overflow用户
提问于 2019-11-08 06:33:47
回答 2查看 29关注 0票数 0

我使用一个函数打开一个.txt文件,该文件包含数字3.0。

然后在main中,我想将这个变量设置为,从文件中读取,_>,->,从指向变量的指针中复制的值。我打印出来检查一下。

代码语言:javascript
复制
void fileview(double *C);

int main(void) {
    double *C_p;

    fileview(*C_p);

    double C;
    C = *C_p;

    printf("%f", C);
    printf("%p", C_p);
    return 0;
}

void fileview(double *C) {
   FILE *infile;
   if(!(infile=fopen("input.txt","r"))) {
       printf("Error opening file\n");
       exit(1);
   }
   if(1!=fscanf(infile,"%lf",C)) {
       printf("Error reading parameters from file\n");
       exit(1);
   }
   fclose(infile);
}

我认为这是有意义的,因为一开始我在指针处声明了值。然后,我通过文件从指针输入值。然后我将指针中的值放入变量C中。

但是我得到了错误:

错误:“fileview”文件视图(*C_p)的参数%1的类型不兼容;

注意:应该是‘double*’,但参数的类型是‘double’void fileview(double *C);

EN

回答 2

Stack Overflow用户

发布于 2019-11-08 06:39:42

问题在于如何进行此调用:

代码语言:javascript
复制
fileview(*C_p);

函数fileview需要一个double *,但*C_p是一个double

但你有一个更大的问题。C_p是未初始化的,您在这里取消对它的引用-这是undefined。在filevew()中,它写入*C,就好像它指向有效内存一样。

您可以简单地将您的main编写为:

代码语言:javascript
复制
int main(void) {
    double C = 0;

    fileview(&C);

    printf("%f", C);
    return 0;
}

这确保了有效的指针被传递给fileview()

您的fileview也包含一个问题:fscanf()返回成功扫描的项目数。因此,当您扫描单个double值时,应该对照1进行检查:

代码语言:javascript
复制
  if( 1! = fscanf(infile,"%lf",C) ) {
      ...
  }
票数 2
EN

Stack Overflow用户

发布于 2019-11-08 06:41:06

fileview()需要一个指向双精度变量的指针作为其参数。C_p是一个double *,所以*C_p只是一个double,而不是double *

您需要将指针设置为指向有效内存,因此在调用fileview()之前,它需要保存C的地址。

代码语言:javascript
复制
void fileview(double *C);

int main(void) {
    double C;
    double *C_p = &C;

    fileview(C_p);

    printf("%f", C);
    printf("%p", C_p);
    return 0;
}

void fileview(double *C) {
   FILE *infile;
   if(!(infile=fopen("input.txt","r"))) {
       printf("Error opening file\n");
       exit(1);
   }
   if(5!=fscanf(infile,"%lf",C)) {
       printf("Error reading parameters from file\n");
       exit(1);
   }
   fclose(infile);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58757834

复制
相关文章

相似问题

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