16 文件操作
字符集:泛泛意义上的文本文件中的数据与磁盘中保存的二进制之间的映射关系。
常见的字符集:ASCLL,Latin,GB2312,GBK,UTF-8
乱码问题:由于我们解码时使用的字符集不是当初编码时使用的字符集导致的!
避免乱码:解码时使用的字符集必须与当初编码时使用的字符集一致。
C程序中,文件中数据的输入/输出操作以“流”的方式进行,可以看做是一种数据的流动。
要站在内存的角度
16.2.2 标准文件
标准文件 | 文件指针 | 设备 |
---|---|---|
标准输入 | stdin | 键盘 |
标准输出 | stdout | 屏幕 |
标准错误 | stderr | 屏幕 |
16.2.4 getchar()和putchar()
getchar()函数是从标准输入流读取一个字符,在同一个时间内只会读取一个单一的字符。
int getchar(void);
putchar()函数将一个字符写入到标准输入流,这个字符在同一时间只会输出一个单一的字符。
int putchar(int character);
16.2.5 gets()和puts函数
gets()函数是从标准输入流读取一行文本,并将其存储在一个字符数组中,直到遇到换行为止。
char *gets(char *str);
puts()函数用于将字符串输出到标准输出流,并自添加换行符,它接受一个资格字符作为参数,并显示在屏幕上。
int puts(const char *str);
16.3 文件读写
16.3.1 打开文件
fopen():来创建一个新的文件,或者打开一个已有的文件(有该文件就打开,没有该文件就创建再打开)
头文件:
stdio.h
FILE *fopen(const char *filename,const char *mode);
FILE *表示文件流,如果打开失败就会返回一个空指针(NULL)
模式 | 描述 |
---|---|
r | 只读模式 |
w | 只写模式:文件存在,清楚文件的内容从头写,如果文件不存在,创建一个新文件从头写。 |
a | 追加模式:文件不存在会创建一个新的文件,文件存在,会在文件内容后面追加写入。 |
rb | 只读二进制模式 |
wb | 只写二进制模式:文件存在,清楚文件的内容从头写,如果文件不存在,创建一个新文件从头写。 |
ab | 追加二进制模式:文件不存在会创建一个新的文件,文件存在,会在文件内容后面追加写入。 |
r+ | 读写模式 |
w+ | 读写模式:文件存在,清楚文件的内容从头写,如果文件不存在,创建一个新文件从头写。 |
a+ | 读写模式:文件不存在会创建一个新的文件,文件存在,会在文件内容后面追加写入。 |
rb+ | 读写二进制模式:打开一个二进制文件,允许读写文件。 |
r+b | 读写二进制模式:打开一个二进制文件,允许读写文件。 |
wb+ | 读写二进制模式:打开一个二进制文件,从头读写文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,则清空文件并从头读写。 |
w+b | 读写二进制模式:打开一个二进制文件,从头读写文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,则清空文件并从头读写。 |
ab+ | 读写二进制模式:打开一个二进制文件,读取或追加写入文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,读取或在已有内容后面追加写入。 |
a+b | 读写二进制模式:打开一个二进制文件,读取或追加写入文件。如果文件不存在,则会创建一个新文件并读写;如果文件存在,读取或在已有内容后面追加写入。 |
16.3.2 关闭文件
fclose()
stdio.h
int fclose(FILE *stream);
16.3.3 写入文件
stdio.h
int fput(int character,FILE *stream);
stdio.h
int fputs(const char *str,FILE *stream);
写入失败返回EOF
stdio.h
int fprintf(FILE *stream,const char *format,...);
写入失败返回EOF
16.3.4 读取文件
stdio.h
int fgetc(FILE *stream);
读取失败,返回EOF
fgets():从文件中逐行读取,遇到换行符结束,读取的内容包括换行符。
stdio.h
char *fgets(char *str,int num,FILE *stream);
fscanf():从文件中解析数据并存储到变量中,使用空白字符(空格、制表符、换行符等)分隔内容赋值给不同的变量。
stdio.h
int fscanf(FILE *stream, const char *format, ...);
读取失败返回EOF
原文地址:https://blog.csdn.net/qq_46115245/article/details/134677341
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27512.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!