在C / C ++中避免文本文件中的某些特殊字符读取特殊列

时间:2013-11-02 10:27:42

标签: c++ c

有人可以帮我解决这个问题吗? : 我有一个这种形式的文本文件:

"1.101511000000E+02","-3.066300000000E+01"
"8.328840000000E+01","-7.020080000000E+01"
"1.053746000000E+02","-4.622800000000E+01"
"1.314320000000E+01","-7.866200000000E+01"
"9.876160000000E+01","-5.844720000000E+01"
"3.129990000000E+01","-7.919930000000E+01"
"7.152530000000E+01","-7.527770000000E+01"
"2.849310000000E+01","-7.933210000000E+01"
"7.602290000000E+01","-7.410480000000E+01"`
它有4003行。我想阅读这些列,例如避免使用字符:'''和','。 然后我读取符号+或 - 并识别'E'以获得权力并将我的结果写入另一个文件,然后再使用它。我举一个例子说明我需要的东西: 1.101511000000 +02 -3.066300000000 +01 然后我要做的就是例如,一旦我得到第一列: 1.101511000000 当我知道它的力量2时,我这样做: 1.101511000000x10² 我将写给我的新文件的是:

110.1511 -30.663 83.2884 -70.2 105.3746 -46.228

所以主要问题是: 1)如何阅读此文本文件并避免使用这些特殊字符? 2)找到以E + 02等形式写的电源? 3)进行计算? 4)避免浮动中的所有冗余000? 5)将结果同时放在新文件中?

我提前感谢你们,但请考虑一下这对我来说非常紧迫和重要的事实。

Mojdeh

1 个答案:

答案 0 :(得分:1)

您可以使用fscanf以相应的指数读取这两个数字。 像这样:

fscanf(pFile, "\"%f\", \"%f\"", &number1, &number2);

然后您只需使用fprintf将其写回第二个文件,如下所示:

fprintf(pFile2, "%g %g", number1, number2);

%g格式使用最短的表示形式打印数字。

有关这些功能的更多信息,请转至http://www.cplusplus.com/reference/cstdio/fprintf/