1. fopen(); ------------#inclue <stdio.h>
“r”只读,“r+”读写(光标定义在开头) , "w"只写(如果文件存在则截断为0, 不存在则创建,光标定义在开头),“w+”读和写(如果文件存在则截断为0, 不存在则创建,光标定义在开头),“a”在文件末尾写(如果文件不存在,创建文件),“a+”读和写(读的时候文件定位在开头,写的时候定位在末尾,文件不存在则被创建)
返回文件指针FILE * , 失败返回NULL并errno
--------------------------------------------------------------------------
2. 关闭 fclose();
1. 刷新缓存区 2. 关闭流, 关闭底层文件描述符
3. fgetc();-------------------------------------------------------------
到达文件结尾或出错返回-1(#define EOF -1)
FILE *fp 操作系统默认打开了三个文件(关联到三个流)
标准输入 stdin --- 0
标准输出 stdout --- 1
标准出错 stderr --- 2
int ch = fgetc(stdin); //ch表示ASCII,stdin表示流
while((ch = fgetc(stdin) == EOF) //表示读到结尾
{};
4. fputc();---------------------------------------
fputc(ch, stdout); //ch为字符的ASCII,然后文件流
用fgetc()和fputc()实现文件拷贝
5. fgets();-------------------------------------------------------------------
把数据存入缓冲区s中,最多读size - 1个,输入的 ‘\n’ 也算读取的字符(ctrl + d也算读到结尾标志),自动到后面添 ‘\0’(第size个) ,遇到 '\n' 读取结束,返回存储的s地址
‘\n’ 的位置为s[strlen(s) - 1] ; strlen(s) + 1 = sizeof(s)
统计文件的行数:
6. fputs();-------------------------------------------------------------------
fputs(s, stdout); //输出存的s[]
用fgets()和fputs()实现拷贝
总结:
打开文件 fopen(要打开的文件流, 读写模式)
成功返回文件流FILE * | 失败返回NULL并置errno
输入 fgetc(从哪来的文件流) | fgets(正存入的缓冲区buf,存的大小size,从哪来的文件流)
返回 int型ASCII | 返回 正存入的缓冲区buf地址char *
失败返回EOF | 失败返回 NULL
输出 (已存的ASCII 或字符串地址 ,要输出的文件流fd)
返回 int型ASCII | 非负数
失败返回 EOF
-----------------------------------------------------------------------------------------------------
fprintf(指定文件,.......);
fflush(fp); //刷新
------------------------------------------------------------------------------------------------------
gg回到开头, g回到最后一行