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
}
#include<stdio.h>// 这里假设文件是文本格式的
void main() { int ichar fnm[20],pf[30][256]FILE *fp
for ( i=0i<30i++ ) {
sprintf(fnm,"test%d.dat",i+2)
if ( fp=fopen(fnm,"r") ) {
fscanf(fp,"%s",pf[i])printf("%s\n",pf[i])
fclose(fp)
}
}
}
C语言的文件 *** 作是用指针来完成的,你首先需要一个文件指针FILE*
fp
然后调用一批 *** 作文件的函数来读写文件。
fopen()
打开文件
fread()
读文件
fseek()在文件中前进后退
fclose()关闭文件
C++语言的文件 *** 作是面向对象的方式的,你首先要有一个文件对象,文件对象初始化的时候传入文件名,就构造出了读写文件的对象,然后 *** 作这些对象来完成读写。
ifstream
file1("c:\\pdos.def")//以输入方式打开文件,file1是一个读文件对象。
ofstream
file2("c:\\x.123")//以输出方式打开文件
,file2是一个写文件对象。
例如关闭文件就调用
file1.close()
读入文件可以用get成员函数
file2.get(str1,
1024,
'\n')
//从文件中读取字符到字符串str1,当遇到回车或读取了1024个字符时终止。
检测是否到达文件结尾用eof函数
if(file2.eof())
printf("已经到达文件尾!")
C++ *** 作文件的前进后退的函数是
seekg()和
seekp(),例如
file1.seekg(128,ios::end)//把文件的读指针从当前位置向后移128个字节
file2.seekp(1024,ios::beg)//把文件的写指针从文件开头向后移1024个字节
还有最后一点,就是不管是什么语言,当你读一个文件的时候,你需要弄清楚文件的格式,例如文件中的数据是弄哪种分隔符的,是tab还是回车还是逗号分隔,针对具体的文件格式编写自己的读写函数,C++提供的标准函数并不能直接帮你完成各种格式的读取。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)