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

函数使用说明:

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. Codeforces_803

    A. 填k个1,使矩阵主对角线对称,相同情况选择上面1数量多的. #include<bits/stdc++.h> using namespace std; ][] = {}; int ma ...

  2. HDU_3410_单调栈

    http://acm.hdu.edu.cn/showproblem.php?pid=3410 初探单调栈,从左往右,求l,从右往左,求r. #include<iostream> #incl ...

  3. 浅谈无线局域网WLAN

    无线局域网WLAN 一.概述 有线局域网的组成如下图所示,多台计算机通过双绞线连接到一个集线器(hub)或交换机(switch)上,组成一个有限局域网. 无线局域网的组成如下图所示,多台计算机通过无线 ...

  4. mysql 8.0.12版本 忘记密码

    1.mysqld --console --skip-grant-tables --shared-memory 2.另一个控制台 mysq 3.use mysql; 4.select user,host ...

  5. k8s系列---stateful(有状态应用副本集)控制器

    http://blog.itpub.net/28916011/viewspace-2215046/ 在应用程序中,可以分为有状态应用和无状态应用. 无状态的应用更关注于群体,任何一个成员都可以被取代. ...

  6. 同步锁——ReentrantLock

    本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 Lock接口简介 在JUC包下面有一个java.util ...

  7. mqttnet3.0用法

    .net常用的mqtt类库有2个,m2mqtt和mqttnet两个类库 当然了,这两个库的教程网上一搜一大把 但mqttnet搜到的教程全是2.7及以下版本的,但3.0版语法却不再兼容,升级版本会导致 ...

  8. zabbix性能问题

    在我们的zabbixserver端主机数量过多时,如果由server端去收集数据,zabbix会出现严重的性能问题,主要的表现有: 1.当被监控端达到一个量级的时候,web操作会卡,容易出现502 2 ...

  9. vue 鼠标移入移出 列表蒙层展示

    <template> <section class="base"> <ul> <li v-for="(item, index) ...

  10. Maven 父子工程的一些细节

    Project,项目,也叫做工程. 父子工程中,子模块会自动继承父工程的资源.依赖,但子模块之间是独立的,不能直接访问彼此中的资源.类. 就是说我们可以把多个子模块都要用的资源.依赖提出来,放到父工程 ...