`
microjava
  • 浏览: 310014 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

c语言编程基础之文件操作(二)

阅读更多
数据块读写函数fread和fwtrite
    C语言还提供了用于整块数据的读写函数。可用来读写一组数据,如一个数组元素,一个结构变量的值等。
读数据块函数调用的一般形式为:
fread(buffer,size,count,fp);
写数据块函数调用的一般形式为:
fwrite(buffer,size,count,fp);
其中:
buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。
    size   表示数据块的字节数。
    count  表示要读写的数据块块数。
    fp     表示文件指针。
例如:
fread(fa,4,5,fp);
其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。

/*从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上.*/
#include<stdio.h>
struct stu
{
  char name[10];
  int num;
  int age;
  char addr[15];
}boya[2],boyb[2],*pp,*qq;

main()
{
  FILE *fp;
  char ch;
  int i;
  pp=boya;
  qq=boyb;

  if((fp=fopen("stu_list","wb+"))==NULL)
  {
    printf("Cannot open file strike any key exit!");
    getchar();
    exit(1);
  }

  printf("input data:");
  for(i=0;i<2;i++,pp++)
    scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);

  pp=boya;
  fwrite(pp,sizeof(struct stu),2,fp);
  rewind(fp);
  fread(qq,sizeof(struct stu),2,fp);
  printf("\n\nname\tnumber	age	addr\n");
  for(i=0;i<2;i++,qq++)
  printf("%s\t%d	%d	%s\n",qq->name,qq->num,qq->age,qq->addr);
  fclose(fp);
}



#include<stdio.h>
struct stu
{
  char name[10];
  int num;
  int age;
  char addr[15];
}boya[2],boyb[2],*pp,*qq;

main()
{
  FILE *fp;
  char ch;
  int i;
  pp=boya;
  qq=boyb;
  
  if((fp=fopen("stu_list2","wb+"))==NULL)
  {
    printf("Cannot open file strike any key exit!");
    getchar();
    exit(1);
  }

  printf("input data:");
  for(i=0;i<2;i++,pp++)
    scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
  pp=boya;  //重新赋首地址

  for(i=0;i<2;i++,pp++)
    fprintf(fp,"%s	%d	%d	%s\n",pp->name,pp->num,pp->age,pp->addr);
  rewind(fp); //起作用了

  for(i=0;i<2;i++,qq++)
    fscanf(fp,"%s %d %d	%s\n",qq->name,&qq->num,&qq->age,qq->addr);

  printf("\n\nname\tnumber	age	addr\n");
  qq=boyb;  //重新赋首地址
  for(i=0;i<2;i++,qq++)
    printf("%s\t%d	%d	%s\n",qq->name,qq->num,qq->age,qq->addr);
  fclose(fp);
}



/*在学生文件stu_list中读出第二个学生的数据。*/
#include<stdio.h>
struct stu
{
  char name[10];
  int num;
  int age;
  char addr[15];
}boy,*qq;

main()
{
  FILE *fp;
  char ch;
  int i=1;
  qq=&boy;

  if((fp=fopen("stu_list","rb"))==NULL)
  {
    printf("Cannot open file strike any key exit!");
    getchar();
    exit(1);
  }
  rewind(fp);  //起作用了
  fseek(fp,i*sizeof(struct stu),0);
  fread(qq,sizeof(struct stu),1,fp);

  printf("\n\nname\tnumber\tage\taddr\n");
  printf("%s\t%5d\t%7d\t%s\n",qq->name,&qq->num,&qq->age,qq->addr);
}



#include<stdio.h>
int main(void) 
{ 
  FILE *fp; 
  char fname[10]="TXXXXXX", *newname, first; 
  newname=mktemp(fname); 
  fp=fopen(newname,"w+"); 
  if(NULL==fp)
  return 1;
  
  fprintf(fp,"abcdefghijklmnopqrstuvwxyz"); 
  rewind(fp); //起作用了
  
  fscanf(fp,"%c",&first); 
  
  printf("The first character is: %c\n",first); 
  
  fclose(fp); 
  remove(newname); 
  
  return 0; 
}


#include<stdio.h>
main()
{
  FILE *fp;
  char ch;
  if((fp=fopen("rew.txt","w+"))==NULL)
  {
    printf("Cannot open file any key exit!");
    getchar();
    exit(1);
  }

  fprintf(fp,"abcdefg");
  rewind(fp); //起作用了

  fscanf(fp,"%c",&ch);
  printf("ch:%c \n",ch);
  
  fclose(fp);
}



1.C系统把文件当作一个“流”,按字节进行处理。
2.C文件按编码方式分为二进制文件和ASCII文件。
3.C语言中,用文件指针标识文件,当一个文件被 打开时,可取得该文件指针。
4.文件在读写之前必须打开,读写结束必须关闭。
5.文件可按只读、只写、读写、追加四种操作方式打开,同时还必须指定文件的类型是二进制文件还是文本文件。
6.文件可按字节,字符串,数据块为单位读写,文件也可按指定的格式进行读写。
7.文件内部的位置指针可指示当前的读写位置,移动该指针可以对文件实现随机读写。
分享到:
评论

相关推荐

    C语言编程实战:文件操作基础,掌握fopen、fprintf、fread、fwrite等核心函数,实现高效数据存储与检索

    本资源为C语言文件读写操作代码,旨在帮助读者掌握C语言中的文件操作...通过学习本资源,你将能够更好地应对实际项目中的文件操作需求,为你的编程之路奠定坚实基础。 总之,本资源是一个实用的C语言文件读写操作教程,

    C语言二级(apk)

    无论您是参加全国计算机考试C语言二级考试,还是参加省级C语言二级考试,本书都严格依照C语言二级考试大纲要求,全面增强您的C语言编程基础知识。提高您的C语言编程思想和开发实力,使您能够写出高质量的C语言代码...

    Linux下C语言编程教程

    Linux下C语言编程入门教程 目录 第一章基础知识 ……………………………………………………………………………4 第二章进程介绍 …………………………………………………………………………10 第三章文件操作 ...

    linux操作系统下c语言编程入门

    linux操作系统下c语言编程入门,基础知识、进程介绍、文件操作、时间概念、信号处理、消息管理、线程操作、网络管理

    c语言文件读写操作代码

    C语言文件读写操作是C语言编程中的一个基础且重要的部分,它允许程序与磁盘上的文件进行交互,实现数据的存储和读取。以下是关于C语言文件读写操作代码的500字资源描述: C语言提供了丰富的文件操作函数,如fopen、...

    C语言二级安卓版

    无论您是参加全国计算机考试C语言二级考试,还是参加省级C语言二级考试,本书都严格依照C语言二级考试大纲要求,全面增强您的C语言编程基础知识。提高您的C语言编程思想和开发实力,使您能够写出高质量的C语言代码...

    Linux 操作系统 C语言编程入门 PDF

    第三章 文件操作 …………………………………………………………………………17 第四章 时间概念 …………………………………………………………………………27 第五章 信号处理 …………………………………………...

    C语言编程兵书(完整扫描版 )pdf格式 电子书

    文件操作;综合实例应用。随书所附光盘包含本书配套实例源文件、赠送的C语言学习资料和教学视频。本书适合所有想全面学习C语言的编程人员及C语言爱好者阅读。 章节目录: 第1篇 C语言开发基础 第1章 扎马步认识...

    C语言文件读写操作详解:高效处理文件数据.zip

    c语言文件读写操作代码文件读写是C语言编程中的基础技能之一。通过本文的介绍,你应该已经掌握了C语言中文件读写操作的基本概念和常用函数。在实际编程中,合理地使用文件流和标准I/O函数,可以帮助你高效地处理文件...

    Linux下C语言编程之经验总结

    对Linux下进行C语言编程进行了多方面的总结,包括Linux下C语言编程基础,进程的创建,进程通信、消息管理,文件的操作,信号处理函数.对于初学者,非常有用!!!推荐之

    Linux操作系统下C语言编程入门

    中文高清晰的PDF,从基础知识,进程介绍,文件操作,网络编程,开发工具等角度详述Linux操作系统下C语言编程入门,简单易懂。

    计算机科学与密码学基础-C语言编程实践-DES算法详解与文件加密解密应用指南

    内容围绕DES算法的核心原理、关键步骤(包括初始置换、16轮迭代处理、最终置换等)、以及具体的C语言编程实践,包含完整的代码示例和文件操作指南。适用于计算机科学、软件工程领域的学生、研究人员以及对加密技术感...

    unix平台下c语言高级编程指南

    1.3 高级的文件操作 第2章 终端操作 2.1 终端的基本概念 2.2 终端输入和输出 2.3 ioctl系统调用 第3章 进程及进程间通信 3.1 进程的基本概念 3.2 进程的一般操作 3.3 进程的特殊操作 3.4 进程间使用管道通信...

    C语言二级学习 apk

    无论您是参加全国计算机考试C语言二级考试,还是参加省级C语言二级考试,本书都严格依照C语言二级考试大纲要求,全面增强您的C语言编程基础知识。提高您的C语言编程思想和开发实力,使您能够写出高质量的C语言代码,...

    C语言中的文件读写全解析,学习C语言的15个黄金建议.zip

    用途: 适用于编程初学者及希望提升C语言技能的开发者,帮助学习者通过具体实例理解C语言的文件操作过程,掌握基础至高级的编程概念与技巧,提高解决实际问题的能力。 在C语言编程领域,对文件的操作是一项基本而...

    linux下c语言编程入门

    这是一本学习linux下c语言编程的入门书籍,非常适合于初学者,从非常基本的概念入手,结合程序实例介绍了linux下c语言的基础。本书简介明了的介绍了c语言基础知识、进程介绍、文件操作、时间概念、信号处理、消息...

    C语言经典编程282例——源码

    本书内容包括初识c语言、简单的c程序、算法入门、常用数据类型、运算符与表达式、数据输入与输出函数、选择和分支结构程序设计、循环结构、数组、函数编程基础、指针、常用数据结构、位运算操作符、存储管理、预处理...

    linux下C语言编程入门

    一个初级的linux下C语言编程教程,dpf格式: 一共9章: 1.基础知识 2.进程介绍 3.文件操作 4.时间概念 5.信号处理 6.消息管理 7.线程操作 8.网络编程 9.Linux下C开发工具介绍

    linux操作系统下C语言编程入门

    linux操作系统下C语言编程入门 目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)...

Global site tag (gtag.js) - Google Analytics