C语言->关于文件数据的录入和输出调用的函数总结
数据输入输出对象之间的关系图:
函数使用说明:
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语言->关于文件数据的录入和输出调用的函数总结的更多相关文章
- 「C语言」文件的概念与简单数据流的读写函数
写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...
- c语言笔记4数据的输入和输出
数据的输入和输出 知识点一 计算机的用途:数据的输入和输出. 分类: 字符:字符输入函数getchar().字符输出函数putchar(). 格式:格式输入函数scanf().格式输出函数printf ...
- C语言中字符数据的输入和输出
字符的输出 C语言中使用putchar函数来输出字符数据 #include <stdio.h> int main() { char a,b,c,d; //定义字符变量a,b,c,d a = ...
- C语言头文件怎么写?(转载)
---恢复内容开始--- c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事:所以今天一定要把它弄明白! 其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码,还在 ...
- 用CBrother将excel中的数据转换为C语言头文件
用CBrother将excel中的数据转换为C语言头文件 最近在工作中,产品这边总是要调整一些参数,而我们在这一块要求所有的配置必须用宏定义来做,因为不同型号直接硬编码写死在代码里,但是一但数量大了, ...
- 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出
package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
- C语言进行csv文件数据的读取
C语言进行csv文件数据的读取: #include <stdio.h> #include <string.h> #include <malloc.h> #inclu ...
- C语言 读取文件中特定数据
//读取文件数据 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct jia ...
- C语言dll文件的说明以及生成、使用方法
最近在搞一些小项目,由于要涉及到跟其它语言进行交互,动态链接库变成了不二的选择.为此也查阅了很多资料,将动态链接库的相关知识在此做一个整理. 一.动态链接库概述 动态链接库(Dynamic Link ...
随机推荐
- sqlserver附加数据库时出错。有关详细信息,请单击“消息”列中的超链接
在SqlServer中附加数据库时,有时会发生下面的错误. 解决 :可能的问题是放置附加数据库的文件夹的权限问题.如下解决.点击放置附加数据库的文件夹-->右键-->属性 权限要设置为完全 ...
- HessianSharp如何部署到IIS7上?
第一:添加映射 第二:选择经典
- 本地开发环境伪装成SSL连接的实现
本地ssl开发测试实现1,在外网服务器上使用测试域名和t.test.cn,用let's encrypt申请 证书并正常运行2,修改本地服务器host文件,将t.kennylee.vip指向127.0. ...
- [Effective Java 读书笔记] 第6章 枚举和注解
第三十条 用enum代替int 总得来说,使用enum有几点好处 1.编译时的类型安全, 2.可以保证就是自己定义的值,不会有月结风险, 3.每个枚举类型有自己的命名空间 4.枚举可以添加任意的方法和 ...
- RFC笔记,IPv6 Node Requirements
Request for Comments: 6434,IPv6 Node Requirements 路由器节点必须能够生成链路本地地址 5.9.2. IPv6 Stateless Address Au ...
- k8s 安装ELK(6.7.0版本)和EFK
一.Elasticsearch安装 helm安装的也行,而且helm安装的stable/elasticsearch可用性更高,但是使用资源更多. 1.安装elasticsearch(线上环境千万记得把 ...
- [RHEL8]安装Docker Problem: package docker-ce-3:19.03.6-3.el7.x86_64 requires containerd.io
系统环境 # cat /etc/redhat-release Red Hat Enterprise Linux release 8.0 (Ootpa) 安装依赖 # yum install -y yu ...
- Centos8(Liunx) 中安装PHP7.4 的三种方法和删除它的三种方法
编译安装 Centos8下PHP源码编译和通过yum安装的区别和以后的选择 其实这两种方法各有千秋: yum安装: 从yum安装来说吧,yum相当于是自动化帮你安装,你不用管软件的依赖关系,在yum安 ...
- 【React Native】在网页中打开Android应用程序
React Native官方提供Linking库用于调起其他app或者本机应用.Linking的主要属性和方法有: 属性与方法 canOpenURL(url); 判断设备上是否有已经安装相应应用或可以 ...
- Lucene之查询索引
Query子类 TermQuery:根据域和关键词进行搜索 /** * termQuery根据域和关键词进行搜索 */ @Test public void termQuery() throws IOE ...