[C_9] IO & 标准库

15 IO

15.1 字符IO

getchar/putchar //从屏幕 输入输出一个字符

fgetc/fputc getc/putc(有的编译器可能是宏) //从文件输出输入

getchar();//会让程序暂时等待


从效率上看,专用的(输入输出函数)比通用的(输入输出函数)快

ungetc退回一个字符

feof(FILE*) //检查是否超越了文件末尾,一般不用


15.2 字符串IO

puts/gets //从屏幕写和读
gets把换行符换成\0
puts读的时候自动加换行符


fputs/fgets //从文件写和读
fputs不会自动加换行符
fgets本身会保留末尾的换行符 

#include<stdio.h>
int main()
{
	char name1[100],name2[100],name3[100];
	printf("scanf,gets,fgets使用验证,请输入3次您的姓名:\n");
	scanf("%s",name1);
	scanf("%*[^\n]%*c");
	gets(name2);
	fgets(name3,100,stdin);
	printf("scanf:%s\ngets:%s\nfgets:%s\n",name1,name2,name3);
	return 0;
}









说明:scanf遇到空格即停止输入,gets函数无法验证字符数组是否会越界,所以不安全,fgets适合替代gets。


15.3 文件IO

文件打开及关闭:
FILE* fopen(const char*path,const char* mode);//两个常量字符串参数,第一个是fclose(fp); // 及时关闭,释放资源 路径,第二个是打开方式


打开方式:
r
r+ 读的基础上写,文件必须事先存在
w 清空原来的文件内容重新写
w+ 写的基础上读,如果文件不存在就先被创建
a appending追加,在文件末尾写
a+ 读写(追加)
b表示binery二进制文件,windows系统把文件分为文本文件和二进制文件。
rb(只读) wb(只写) ab(追加)
rb+(读写,头部开始) wb+(读写,覆盖) ab+(读写,追加)


C语言提供的FILE指针 stdin stdout stderr//没有缓冲 立即输出来


定位读写:
int fseek(FILE *stream, long offset, int whence);
offset: +n/-n 偏移量
whence:SEEK_SET //文件头SEEK_CUR//光标处SEEK_END//文件尾


15.4 内存读写IO

int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...); //效率低,少量数据可用
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream); //大数据推荐
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
参数:内存地址,每个元素字节数,元素个数,文件
fread返回成功读到的元素个数


16 标准库

assert.h:诊断,包含assert宏,可以进行自我检查
ctype.h:字符处理,分类,大小写转换
errno.h:错误,主要错误信息 errno
float.h:浮点数的特性
limits.h:整数的大小,提供了描述整数类型的宏
locale.h:本地化
math.h:数字计算,常见的三角函数双曲函数,指数函数,取整函数,取余函数
setjmp.h 跳转
signal.h:信号处理
stdarg.h:可变长参数
stddef.h:经常使用的类型和定义
stdio.h:输入输出
string.h:字符串处理
stdlib.h:其他函数字符串-->数字,随机数,内存管理,系统通信,搜索排序等
time.h:时间和日期
stdbool.h:布尔类型和数值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值