fscanf、fread及fwrite读取数据的使用方法示例——C语言(vc6)

在电脑上编辑的文件属于文本文件,不能直接用fread读取,可用fscanf读取,fread和fwrite只能对二进制文件进行操作。

代码示意:

# include
# include
# define N 10

void r_data_f_text(int [],FILE *);
void w_data_b(int [],FILE *);
void r_data_b(FILE *);

void main()
{
 FILE *fp_b,*fpr_d;

 int data[N];
 //打开文本文件(文件存放在程序根目录)
 if((fpr_d=fopen("exp-P137-testdata.txt","r"))==NULL)
  //打开失败返回提示信息
  printf("Can't open the file--exp-P137-testdata.txt\n");
 //打开成功执行
 else
  //读取文本文件数据
  r_data_f_text(data,fpr_d);
  
 //以读写二进制文件方式打开/创建一个二进制文件(文件后缀名可自定)
 if((fp_b=fopen("exp-P137-testdata_b.txt","wb+"))==NULL)
  printf("Can't open thefile--exp-P137-testdata_b.txt\n");
 else
 {
  //把文本文件数据写入二进制文件
  w_data_b(data,fp_b);
  //从二进制文件中读取数据
  r_data_b(fp_b);
 }
 fclose(fpr_d);
 fclose(fp_b);
}

void r_data_f_text(int a[],FILE *f)
{
 int i;
 printf("读取文本文件数据:\n\n");
 for(i = 0; i < N; i++)
 {
  //用格式化读写函数fscanf从文本文件中读取数据存到数组data
  fscanf(f,"%d",&a[i]);
  printf("%4d",a[i]);
 }
}

void w_data_b(int a[],FILE *f)
{
 int i;
 printf("\n--------------\n写入二进制文件:\n\n");
 for(i = 0; i < N; i++)
 {
  //fwrite和fread只能对二进制文件进行操作
  //把数组a的数据写入二进制文件;fwrite(数组地址,读入的每个数据字节大小,数据个数,要写入的文件指针)
  //fwrite写入成功返回数据个数,失败返回0
  printf("第%d个数字写入是否成功:%2d\n",i+1,fwrite(&a[i],sizeof(int),1,f));
 }
 printf("--------------");
 rewind(f);//把文件内部指针重绕回文件开头
}

void r_data_b(FILE *f)
{
 int put[N],i;
 printf("\n读取二进制文件:\n\n");
 for(i = 0; i < N; i++)
 {
  //把二进制文件的数据读取到数组put;fread(数组地址,读入的每个数据字节大小,数据个数,要读取的文件指针)
  //fread读取成功返回数据个数,失败返回0
  printf("第%d个数字读取是否成功:%2d\n",i+1,fread(&put[i],sizeof(int),1,f));
 }
 printf("--------------\n从二进制文件输出数据(十进制):\n\n");
 for(i = 0; i < N; i++)
 {
  printf("%4d",put[i]);
 }
 printf("\n");
}

**运行结果:
fscanf、fread及fwrite读取数据的使用方法示例——C语言(vc6)_第1张图片
**数据文件存放示意:
fscanf、fread及fwrite读取数据的使用方法示例——C语言(vc6)_第2张图片
在这里插入图片描述fscanf、fread及fwrite读取数据的使用方法示例——C语言(vc6)_第3张图片

你可能感兴趣的:(文件数据读取)