linux文件编程2__fscanf() fprintf()
#include<stdio.h>
#include<stdlib.h>
/*************************
功能:将一个文件中的数据拷贝到另一个文本文件中
函数:fopen() fscanf()
:
*************************/
int main()
{
FILE *fp,*fp1;
char ch;
if((fp=fopen("tmp.txt","r"))&&(fp1=fopen("copy.txt","w"))==NULL)
{
printf("the operate of open the file faile\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%c",&ch);
fprintf(fp1,"%c",ch);
}
fclose(fp);
fclose(fp1);
return 0;
}
fscanf()与fread()的区别
fscanf(): 功能为:从文件指针fp所指向的文件中按照格式字符串指定的格式将文件中的数据送到输入项地址表中。若读取数据成功会返回所读取数据的个数,并将数据按照指定格式存入内存中的变量或数组中,文件指针自动向下移动;若读取失败则返回EOF。
注意:遇到空格和换行时结束
fread(): 功能为:从文件指针fp所指向的文件的当前位置开始,一次读入size个字节,重复count次,并将读取到的数据存到buffer开始的内存区中,同时将读写位置指针后移size*count次。该函数的返回值是实际读取的count值。
buffer:是一个指针,在fread函数中,它表示存放读入数据的首地址(即存放在何处)。
size:表示数据块的字节数。
count:表示要读写的数据块快数。
fp:表示文件指针。
fscanf()多用于读取文本文件,可以读出完整的字符串,遇到空格、换行符 会结束或者跳过空格读取下一个字符串;
fread()多用于读取二进制文件,且其读写的长度是根据自己定量决定。