标准IO
2024.1.27写
文件设置
FILE *fopen(const char *pathname, const char *mode)
//打开文件
-
返回值
返回file指针,本质是结构体指针(赋值给FILE变量)//NULL -
函数使用
pathname 路径,mode 模式
mode
r可读 r+可读可写
w可写 w+可读可写,新建文件
a可写,追加 a+可读可写,追加
FILE *file;//使用时要定义FILE结构体变量
file=fopen("./1.txt","r+");
if(file==NULL)perror("打开文件失败");
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)
//读取文件
-
返回值
返回'完整'数据块个数(但都可以读取)//-1 -
函数使用
*ptr 读取内容,size 要读取的数据块大小,字节 nmemb 打算读取几个数据块,*stream 要读取的文件
注意事项-数据块
fread(buf,10,1,fd)//所有数据切成 10字节一份 读取1个数据块(一共10给字节)
so 10,1 2,5 5,2 都一样 是10个字节
size_t fwrite(const void *ptr, ize_t size,size_t nmemb,FILE *stream)
//写入文件
-
返回值
返回nmemb的值,也会给垃圾数//-1 -
函数使用
*ptr 读取内容 ,ize 要写入的数据块大小,字节 nmemb 打算写入几个数据块,*stream 要读取的文件
注意事项-垃圾数
使用fwrite时 注意fread的返回值
//更好的写法
ret=fread(buf,1,100,file1);
fwrite(buf,1,ret,file2);
if(ret != 100)break;
fclose(FILE *file)
//关闭文件
- 返回值
0//-1
光标设置
int fseek(FIEL *stream,long offset,int whence)
//移动光标//返回与lseek不同,其他相同
-
返回值
0//-1 -
函数使用
*stream 文件路径,offset 移动数,whence 起始位置
whence
SEET_SET 文件开头 | SEET_CUK 原先位置 | SEET_END 文件末尾
int ftell(FIEL *stream)
//读取位置
- 返回值
当前与起始位置的字节数//-1
void rewind(FILE *stream)
//移动光标至起始位置
字符串函数
fgets()/fputs()
-
读写文件
char *fgets(char *s,int size,FILE *stream)
//按行读取数据-
返回值
被读字符串首地址//-1 -
函数使用
s存储字符数组,size被读字节(注意'\0' \r \n),FILE文件指针
注意-读取时,最后一位为'\0',读取少一字节 条件:有size=5 size=5时 读4(少读一个,特点) size=6时 全部读取 size=7时,打印\n 在win系统下 回车=\r\n size=8时 打印\n
int fputs(const char *s, FILE *stream)
//按行写入数据(追加写入) -
-
读写IO
fgets(buf,100,stdin)
//stdin(标准输入)
fputs(buf,stdout)
//stdout(标准输出)fgets 只认回车/回车也会被读入/只能读字符串,不能读数字 键盘/打印-因为键盘/屏幕,也是文件
gets()/puts()
char *gets(char *s)
//读取字符串 I
int puts(const char *s)
//输出字符串 O
fgets/gets区别
文件操作/字符操作
fgetc()/fputc()
int fgetc(FILE *stream)
//读取文件 一个ASCII值
- 返回值
ASCII//-1
int fputc(int c, FILE /*stream)
//一个ASCII码值 写入文件
getc()/putc()
int getc(FILE *stream)
//从文件读取一个字符
int putc(int c,*stream)
//从文件输出一个字符
fgetc/getc区别
函数/宏(快一点,但参数不能有副作用)
getchar()/putchar()
int getchar()
//从IO缓冲区读取一个字符//读取键盘输入
int putchar()
//从IO缓冲区输出一个字符//显示屏幕输出
注意-缓冲区概念
标签:文件,常用,读取,stream,IO,标准,int,FILE,size
From: https://www.cnblogs.com/night000day/p/17991900