随着阿空加瓜解决了我的问题,我感到自己是个白痴。我忘记了“&”号,一旦将它放到那里,%s就可以读取char和int(我不知道的东西)!感谢所有提供帮助的人!
我有一个作业的输入文件,其中包含需要扫描和打印的化学式(例如SO)。我正在使用一种结构来读取数据,因为它伴随有一系列在计算中使用的浮点数。我将如何声明变量并扫描该数据?我尝试使用%s尝试读入时同时声明为char和unsigned char。
for(i = 0; i <= control - 1; i++)
{
fscanf(table,"%s %lf %lf %lf %lf", gases[i].gas, gases[i].coefa,
gases[i].coefb, gases[i].coefc, gases[i].coefd);
}
输入文件:
4
12 6
SO2 3.891e1 3.904e-2 -3.105e-5 8.606e-9
SO3 4.85e1 9.188e-2 -8.540e-5 32.40e-9
O2 2.91e1 1.158e-2 -0.6076e-5 1.311e-9
N2 2.90e1 0.2199e-2 -0.5723e-5 -2.871e-9
答案 0 :(得分:0)
通常,在C ++中,您不应该使用fscanf()
。您应该使用文件流。因此,您的示例可能看起来像这样:
ifstream inputFile("path to input file");
//... other code
for (i = 0; i <= control - 1; i++)
{
inputFile >> gases[i].gas;
inputFile >> gases[i].coefa;
inputFile >> gases[i].coefb;
inputFile >> gases[i].coefc;
inputFile >> gases[i].coefd;
}
如果您已声明gases
类型的各种成员与文件中的数据相同的类型,则这应该获得正确的类型。在这种情况下,看起来gas
将是std::string
,系数将是float
或double
。