gpt4 book ai didi

c - 扫描行中的每个单词或数字并使用 C 打印到文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:41 26 4
gpt4 key购买 nike

我在文件 data1.txt 中有 2 行(如下所示):

Da    KOL    -1.19503   5.27557163                      
MaB KOL -1.19503 5.27557163

我不确定如何使用 fgets 提取特定的单词或数字,因此我使用 fscanf 扫描集合的每个组件并将它们打印到另一个文件。代码是:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<math.h>


main()
{
FILE *fpt1, *fpt2;
fpt1=fopen("data1.txt","r");
fpt2=fopen("data2.txt","w");

int i;
double ep, si;
char *sto1, *sto2;

for(i=0;i<2;i++)
{
fscanf(fpt1,"%s\n",sto1);
fscanf(fpt1,"%s\n",sto2);
fscanf(fpt1,"%lf\n",&ep);
fscanf(fpt1,"%lf\n",&si);
fprintf(fpt2,"%s %s %2.8lf %2.8lf\n",sto1,sto2,ep,si);
}
fclose(fpt1);
fclose(fpt2);
}

但是我在文件 data2.txt 中得到了这个输出:

Da (null) 0.00000000 0.00000000
KOL (null) -1.19503000 5.27557163

虽然,所需的输出是在一行的每个组件之间有一个空格,例如:

Da KOL -1.19503 5.27557163                      
MaB KOL -1.19503 5.27557163

有人可以帮我解决这个问题吗?

最佳答案

#include <stdio.h>

//A good habit is not to use "main()"
int main(int argc, char *argv[])
{
FILE *fpt1, *fpt2;
fpt1=fopen("data1.txt","r");
fpt2=fopen("data2.txt","w");

int i;
double ep, si;
char sto1[100], sto2[100]; //here neeed array

for(i=0;i<2;i++)
{
fscanf(fpt1,"%s",sto1); //without '\n'
fscanf(fpt1,"%s",sto2);
fscanf(fpt1,"%lf",&ep);
fscanf(fpt1,"%lf",&si);
fprintf(fpt2,"%s %s %2.8lf %2.8lf\n",sto1,sto2,ep,si);
}
fclose(fpt1);
fclose(fpt2);

return 0;
}

关于c - 扫描行中的每个单词或数字并使用 C 打印到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com