c语言如何读取dat文件?

我有这样一些数据

XYZ 403899.035,1012051.795,6.384
SS 3,1.600,
XYZ 403907.849,1012057.449,8.732
SS 4,1.600,
XYZ 403923.666,1012058.063,12.440
SS 5,1.600,

我想定义一个结构体,用于存储上述的4个数值,如何读取可以排除英文字符和空格逗号的干扰?

dat文件和普通txt文件相同,都是文本格式,使用普通文本操作函数读取即可。

1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:

#include<stdio.h>
int a;
char b,c[100];
int main(){
    FILE * fp1 = fopen("input.dat", "r");//打开dat格式的输入文件
    FILE * fp2 = fopen("output.txt", "w");//打开输出文件
    if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
        puts("不能打开文件!");
        rturn 0;
    }
    fscanf(fp1,"%d",&a);//从输入文件读取一个整数
    b=fgetc(fp1);//从输入文件读取一个字符
    fgets(c,100,fp1);//从输入文件读取一行字符串
    
    printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数
    
    fputs(c,fp2);//向输出文件写入一行字符串
    fputc(b,fp2);//向输出文件写入一个字符
    fprintf(fp2,"%d",a);//向输出文件写入一个整数
    
    fclose(fp1);//关闭输入文件
    fclose(fp2);//关闭输出文件,相当于保存
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-28
这里有一个文件读取的例子。。几天前编写的。。。你去看一下:FILE 读取把。
#include<stdio.h>
#include<string>
int main(){
FILE *fin,*fout;
char ss[50] ;
int a,b,c;
fout=fopen("C:\\Users\\123\\Documents\\Visual Studio 2010\\Projects\\test1\\TextFile1.txt","w");
while(scanf("%s %d %d %d",ss,&a,&b,&c)){
if(a==0&&b==0&&c==0)
break;
fprintf(fout,"\n%s %d %d %d",ss,a,b,c);
}
fclose(fout);
fin=fopen("C:\\Users\\123\\Documents\\Visual Studio 2010\\Projects\\test1\\TextFile1.txt","r");
fout=fopen("C:\\Users\\123\\Documents\\Visual Studio 2010\\Projects\\test1\\TextFile2.txt","w");
while(!feof(fin))
{
fscanf(fin,"%s %d %d %d\n",ss,&a,&b,&c);
fprintf(fout,"%s\t%d\t%d\t%d\t%d\n",ss,a,b,c,a+b+c);
printf("%s\t%d\t%d\t%d\t%d\n",ss,a,b,c,a+b+c);
}
fclose(fin);
fclose(fout);

}

相似回答