我正在尝试从文件中读取数字并将其设置为不同类中的public 变量。读取文件的函数有一个该类的指针对象实例。我遇到了一个奇怪的问题:
以下作品:
int dummy;
fscanf(file,"%d",&dummy); // assume the file stores the number 10
globals->var = dummy;
cout << "variable is " << globals->var << endl; // this outputs 10 to console. great!
但是我将有很多fscanf
要做,我不想创建所有这些冗余的dummy
变量。我尝试了以下方法:
fscanf(file,"%d",&globals->var);
cout << "variable is " << globals->var << endl; // this outputs 2.9e-321 (aka junk)
有没有不起作用的原因?我是否需要像 globals->&var
那样做,或者类似的变体?我试图将它括在括号中,如下所示:&(globals->var)
,但这也不起作用。有没有这行不通的原因(我不必粘贴很多很多行代码)
谢谢!
最佳答案
正如您在评论中所说,var
的类型是 double。是的,这就是问题所在。你应该为它使用 %f
。
除此之外,我会给你一个建议:
更喜欢使用 C++ 流进行 I/O 工作。它们是类型安全的。如果您使用它们,您将不会遇到使用 fprintf
时遇到的问题。
这是你应该如何使用它:
std::ifstream file("filename.txt");
file >> globals->var; //don't worry about whether var is int, or double!
很酷,不是吗?
关于c++ - 使用 fscanf 设置不同类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540697/