数据输入输出对象之间的关系图:

函数使用说明:

1.一个字符的输入\输出,对象是键盘(缓存和屏幕)

1.1.getchar(a),putchar(a);

1.2.scanf(“%d”,&i),printf(“%d”,i)

2. 一个变量的输入\输出,对象是键盘(缓存和屏幕)

2.1. gets(a),puts(a)

2.2.scanf(“%d %c %2f”,&i,&a,&b),printf(“%d %c %2f”,i,a,b)

3.一个字符的输入\输出,对象是文件(磁盘文件和缓存)

3.1.p=fgetc(fp),fput(p,fp);p=getc(fp),putc(p,fp)

3.2.p=getw(fp),putw(i,fp)

注释:用来对磁盘文件读写一个字(整数)

函数定义:

>int i; FILE *fp;                                                                  >FILE *fp;

>putw(i,fp){                                                                        >getw(fp){

>char *s; s=&i;                                                                   >char *s; int i;

>putc(s[0],fp);putc(s[1],fp);                                                 >s=&i; s[0]=getc(fp); s[1]=getc(fp);

>return(i);                      }                                                     >return(i);                       }

4.一\多个字符窜的输入\输出,对象是文件(磁盘文件和缓存)

4.1.fgets(str,n,fp),fputs(str,fp)

注释://fgetc()函数(getc()宏)与fputc()函数(putc()宏)

getc() putc()是宏,fgetc(),fputc()是函数,它们之间的关系

#define putc(ch,fp) fputc(ch,fp)

#define getc(fp)    fgetc(fp)

由此可见,getc(fp)是fgetc(ch,fp)定义的宏,putc(ch,fp)是fputc(ch,fp)定义的宏,它们实现的功能一样

4.2. fread(buffer,size,count,fp),fwrite(buffer,size,count,fp)

注释:fread(读入存放数据的地址(buffer),要读写的字节数(size),读写多少个size字节的数据项(count),文件型指针(fp));

fwrite(输出存放数据的地址(buffer),要读写的字节数(size),读写多少个size字节的数据项(count),文件型指针(fp));

例子:

fread(&stud[i],sizeof(struct student_type),1,stdin);  //读取数据到缓存里的结构\数组变量,用printf()显示数据到屏幕

fwrite(&stud[i],sizeof(struct student_type),1,stdin);

4.3. fscanf(fp,”%d,%c,%2f”,&i,&a,&b),fpringf(fp,”%d,%c,%2f”,i,a,b)

注释:格式限制输入\输出,读写对象不是终端而是磁盘文件(建议少用),可以与fread和fwrite替换,调用格式:

fscanf(文件指针,格式字符串,输出表列);   //从磁盘文件读取数据到缓存里的变量,用printf()显示数据到屏幕???

fprintf(文件指针,格式字符串,输出表列);

例子:fscanf(fp,"%d,%f",&i,&t);

fprintf(fp,"%d,%6.2f",i,t);

文件结构体: typedef struct { int -fd;        //文件号   int -cleft;     //缓冲区中剩下的字符   int -mode;      //文件操作模式   char * -nextc;  //下一个字符位置   char * -buff;   //文件缓冲区位置   }FILE;

例子1:打开一个已存在文件,录入字符串到文件

#include"stdio.h" void main(){

FILE *in,;  char *ch;

//r+为读/写打开一个文本文件,文件为非空文件,则要把位置指针职位文件末尾,需加fseek(in,0,2);语句

in=fopen("E:\\新建文件夹\\新建文件夹\\a.txt","r+");   //a在文件末尾追加数据,空文件和非空文件位置指针都是在文件末尾

//rewind(in);   //使位置指针重新回到文件开头

//i=ftell(fp);     //获得当前指针位置

fseek(in,0,2);  //使位置指针回到文件末尾

//ch=c;           //录入的字符串会产生乱码,赋值错误

ch=&c[0];         //1.使用指针

//scanf("%s",c);  //2.使用数组

gets(ch);

fputs(ch,in); puts(ch);

fclose(in);

}

例子2:录入字符,在屏幕显示录入字符,显示文件里的全部内容

#include "stdio.h"

#include "stdlib.h"

#define  EOP -1        //定义宏,文件结束符

void main(){

FILE *in;

char ch[50],p;

printf("Please input the file name:\n");

scanf("%s",ch);

if((in=fopen(ch,"r+"))==NULL){    //定义文件字符串要足够长,不然会出错

printf("error!");     exit(0);      }

fseek(in,0,2);

p=getchar();

while(p!='#'){

fputc(p,in);

putchar(p);

p=getchar();

}  printf("\n");

rewind(in);         //文件流指针移到文件开始位置

p=fgetc(in);

while(!feof(in)){     //p!=EOF不适合缓冲文件系统处理二进制文件的情况;错误:p!='\0' p!='\n'

putchar(p);

p=fgetc(in);

}  fclose(in);  printf("\n"); }

C语言->关于文件数据的录入和输出调用的函数总结的更多相关文章

  1. 「C语言」文件的概念与简单数据流的读写函数

    写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...

  2. c语言笔记4数据的输入和输出

    数据的输入和输出 知识点一 计算机的用途:数据的输入和输出. 分类: 字符:字符输入函数getchar().字符输出函数putchar(). 格式:格式输入函数scanf().格式输出函数printf ...

  3. C语言中字符数据的输入和输出

    字符的输出 C语言中使用putchar函数来输出字符数据 #include <stdio.h> int main() { char a,b,c,d; //定义字符变量a,b,c,d a = ...

  4. C语言头文件怎么写?(转载)

    ---恢复内容开始--- c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事:所以今天一定要把它弄明白! 其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码,还在 ...

  5. 用CBrother将excel中的数据转换为C语言头文件

    用CBrother将excel中的数据转换为C语言头文件 最近在工作中,产品这边总是要调整一些参数,而我们在这一块要求所有的配置必须用宏定义来做,因为不同型号直接硬编码写死在代码里,但是一但数量大了, ...

  6. 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出

    package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...

  7. C语言进行csv文件数据的读取

    C语言进行csv文件数据的读取: #include <stdio.h> #include <string.h> #include <malloc.h> #inclu ...

  8. C语言 读取文件中特定数据

    //读取文件数据 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct jia ...

  9. C语言dll文件的说明以及生成、使用方法

    最近在搞一些小项目,由于要涉及到跟其它语言进行交互,动态链接库变成了不二的选择.为此也查阅了很多资料,将动态链接库的相关知识在此做一个整理. 一.动态链接库概述 动态链接库(Dynamic Link ...

随机推荐

  1. Cheat Sheet pyspark RDD(PySpark 速查表)

  2. Educational Codeforces Round 39 Editorial B(Euclid算法,连续-=与%=的效率)

    You have two variables a and b. Consider the following sequence of actions performed with these vari ...

  3. centos7 手把手从零搭建深度学习环境 (以TensorFlow2.0为例)

    目录 一. 搭建一套自己的深度学习平台 二. 安装系统 三. 安装NVIDA组件 四. 安装深度学习框架 TensorFlow 五. 配置远程访问 六. 验收 七. 福利(救命稻草

  4. 深入理解JVM(学习过程)

    这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 2020年02月06日22:43:0 ...

  5. linux 统计文件夹下文件,文件夹,所有个数

    统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件 ...

  6. git-gitlab-github集合

    git-gitlab-github集合 git(一):     git简介 git(二):     git安装和简单使用 git(三):     git的分支管理 git(四):     git的远程 ...

  7. 2020 年 中国.NET开发者调查报告

    微信公众号dotnet跨平台2020年初做的一个关于中国.NET开发者调查收到了开发者近 1400 条回复.这份调查报告涵盖了开发者工具链的所有部分,包括编程语言.应用架构.应用服务器.运行时平台.框 ...

  8. 记录KVM虚拟机常用操作管理命令

    环境说明 centos7中的KVM NAT方式是kvm安装后的默认方式.它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机. 检查当前的网络设置 # virsh net-li ...

  9. ASP.NET MVC通用权限管理系统(响应布局)源码更新介绍

    一.asp.net mvc 通用权限管理系统(响应布局)源码主要以下特点: AngelRM(Asp.net MVC)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash ...

  10. 开源工作流管理系统节点接收人设置“指定节点处理人”系列讲解

    关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...