作业帮 > 综合 > 作业

现在我想用C语言编写一段小程序,实现如下功能,请大神们帮忙啊~~~

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/05 16:08:18
现在我想用C语言编写一段小程序,实现如下功能,请大神们帮忙啊~~~
打开一个txt文件,如果那行是S开头的话,把下面的P开头的后两位加上S开头那行的第三位并成一行输出到另一个txt文件中

# C Minimum_Curvature_Radius_On_Foil_Perssure_Side
#
# S Section_Index Section_Height
S 1 -10.000
------------------------
P 1 23.536 -16.306
P 2 22.345 -12.948
P 3 21.145 -9.606
P 4 19.919 -6.295
P 5 18.637 -3.035
P 6 17.256 0.144
P 7 15.728 3.202
P 8 14.002 6.088
输出
23.536 -16.306 -10.000
22.345 -12.948 -10.000
21.145 -9.606 -10.000
19.919 -6.295 -10.000
18.637 -3.035 -10.000
17.256 0.144 -10.000
15.728 3.202 -10.000
14.002 6.088 -10.000
为防抽,加行汉字:
程序如下,比较简单.把你上面给的内容拷到一个文件里就行了.
程序里的文件名你自己改下就OK了.
#include
int main()
{
FILE* pFile = fopen("input.txt", "r");
FILE* pOut = fopen("out.txt", "w");
char ch;
char strTemp[255];

float sData;

while (!feof(pFile))
{
fscanf(pFile, "%c", &ch);
if ('S' == ch) //为'S',把最后一个数字先存起来
{
fscanf(pFile, "%*d %f", &sData);
}
else if('P' == ch) //为'P',把后两个数和之前存起来的数字写到文件里
{
float f1, f2;
fscanf(pFile, "%*d %f %f", &f1, &f2);
fprintf(pOut, "%.3f %.3f %.3f\n", f1, f2, sData);
}
else if('\n' != ch) //加这句是为了处理空行
{
fgets(strTemp, 255, pFile); //否则把这一行剩下的字符都跳过去
}
}

fclose(pFile);
fclose(pOut);
}