当前位置: 代码迷 >> 综合 >> C语言二进制方式读写文件数据
  详细解决方案

C语言二进制方式读写文件数据

热度:29   发布时间:2024-02-08 12:26:33.0

fwrite(buffer, size, count,fp):以二进制的形式向指定的文件中写入若干数据项(由count决定),返回实际写入的数据项数目,各参数含义如下:

buffer:一个存储区的起始地址,以该地址开始的存储区的数据即是保存到文件中的数据,可以是数组或指针类型;

size:单个数据项的大小(单位:字节);

count:数据项数量;

fp:FILE类型指针,该指针对应的文件即是数据保存的“目的地”;


 
  1. #include <stdio.h>

  2. #include <stdlib.h>

  3.  
  4. int main(){

  5. struct Student{

  6. char name [10];

  7. int num;

  8. int age;

  9. char addr [30];

  10. } stud [10];

  11.  
  12. FILE * output = fopen("D:\\stud.dat","wb");//生成的stud.dat文件无法用记事本打开,打开后显示“乱码”。

  13.  
  14. if(output == NULL){

  15. printf("无法打开文件");

  16. exit(0);

  17. }

  18.  
  19. for(int i=0;i<10;++i){

  20. scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);

  21. fwrite(&stud[i],sizeof(struct Student),1,output);

  22. }

  23. fclose(output);

  24. return 0;

  25. }

fread(buffer, size, count,fp):以二进制的形式从指定的文件中读取若干数据项(由count决定),调用成功返回实际读取到的数据项个数(小于或等于count),不成功或读到文件末尾返回 0,各参数含义如下:

buffer:一个存储区的起始地址,以该地址开始的存储区用于保存从文件中读取出来的数据,可以是数组或指针类型;

size:单个数据项的大小(单位:字节);

count:数据项数量;

fp:FILE类型指针,该指针对应的文件即是数据的“来源地”;


 
  1. #include <stdio.h>

  2. #include <stdlib.h>

  3.  
  4. int main(){

  5. struct Student{

  6. char name [10];

  7. int num;

  8. int age;

  9. char addr [30];

  10. } stud [10];

  11.  
  12. FILE * input = fopen("D:\\stud.dat","rb");

  13.  
  14. if(input == NULL){

  15. printf("无法打开文件");

  16. exit(0);

  17. }

  18.  
  19. for(int i=0;i<10;++i){

  20. fread(&stud[i],sizeof(struct Student),1/*读取1个数据项*/,input);

  21. printf("%s %d %d %s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);

  22. }

  23. fclose(input);

  24. return 0;

  25. }


 
  1. #include <stdio.h>

  2. #include <stdlib.h>

  3.  
  4. int main(){

  5. struct Student{

  6. char name [10];

  7. int num;

  8. int age;

  9. char addr [30];

  10. } stud [5];

  11.  
  12. FILE * input = fopen("D:\\stud.dat","rb");

  13.  
  14. if(input == NULL){

  15. printf("无法打开文件");

  16. exit(0);

  17. }

  18.  
  19. int validCount;//实际读取多少数据项

  20. while((validCount = fread(stud,sizeof(struct Student),5/*最多读取5个数据项*/,input))!=0){

  21. for(int i=0;i<validCount;++i){

  22. printf("%s %d %d %s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);

  23. }

  24. }

  25.  
  26. fclose(input);

  27. return 0;

 

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>


void main(){
FILE *fp=NULL;
FILE *frp=NULL;
int handle;
char fileUrl[50]="d:\\a.txt";
char *c = "licheng";
//fopen方法第二个参数为使用文件的方式
//"rt"只读打开一个文本文件,只允许读数据
//"wt"只写打开或建立一个文本文件,只允许写数据
//"at"追加打开一个文本文件,并在文件末尾写数据
//"rb"只读打开一个二进制文件,只允许读数据
//"wb"只写打开或建立一个二进制文件,只允许写数据
//"ab"追加打开一个二进制文件,并在文件末尾写数据
//"rt+"读写打开一个文本文件,允许读和写
//"wt+"读写打开或建立一个文本文件,允许读写
//"at+"读写打开一个文本文件,允许读,或在文件末追加数据
//"rb+"读写打开一个二进制文件,允许读和写
//"wb+"读写打开或建立一个二进制文件,允许读和写
//"ab+"读写打开一个二进制文件,允许读,或在文件末追加数据
fp = fopen(fileUrl,"w");

//写入文件方法fwrite(const void*buffer,size_t size,size_t count,FILE*stream); 
//(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。
//(2)size:要写入的字节数;
//(3)count:要进行写入size字节的数据项的个数;
//(4)stream:目标文件指针。
fwrite(c,strlen(c),1,fp);
fclose(fp);
//读取文件全部内容
char ch;
frp = fopen("d:\\a.txt","r");
//feof方法判断是否到了文件结尾,配合fgetc方法一起使用
while(!feof(frp)){
ch = fgetc(frp);
putchar(ch);
}
system("pause");
}

 

  相关解决方案