同时扫描字符和整数

时间:2018-11-08 05:38:49

标签: c++

随着阿空加瓜解决了我的问题,我感到自己是个白痴。我忘记了“&”号,一旦将它放到那里,%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

1 个答案:

答案 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,系数将是floatdouble