头文件
#include <stdio.h>
打开文件
打开失败返回 NULL
FILE
: 系统定义的一个数据结构,含有文件名、文件状态、文件当前位置等信息
filename
: 文件名
modes
:
"r"
: 打开文本文件,进行读操作"w"
: 打开文本文件,进行写操作"a"
: 向文本文件追加数据"r+"
: 打开文本文件,进行读/写操作"w+"
: 打开文本文件,进行读/写操作"a+"
: 打开文本文件,允许读,或者向文本文件追加数据
函数原型
FILE *fopen(const char *filename, const char *modes);
e.g.
FILE *fp;
fp = fopen("a.c", "r");
文件读写
返回值是读取或写入文件成功的字符个数,读取或写入失败返回 EOF(-1)
stream
: IO流
format
:
%d
: 十进制整数%f
: 以小数形式输出单、双精度实数%c
: 单个字符%s
: 一个字符串- …
函数原型
int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
e.g.
int a;
fscanf(fp, "%d", &a);
fscanf(stdin, "%d", &a) // 等价于 scanf("%d", &a);
fprintf(fp, "%d", a);
fprintf(stdout, "%d", a); // 等价于 printf("%d", 10);
关闭文件
正常关闭返回 0
,非零值表示有错误
函数原型
int fclose(FILE *stream);
e.g.
fclose(fp);
其他IO操作:
单个字符输入函数,读取成功,返回该字符的ASCII码值,若出错返回 EOF
int getchar(void);
单个字符输出函数,输出成功,返回该字符的ASCII码值,若出错返回 EOF
int putchar(int c);
e.g.
char c = getchar();
putchar(c);
从流 stream
中读取 n
个字符到字符数组 s
中,返回值是一个指针,指向字符串中第一个字符的地址,读取失败返回 NULL
char *fgets(char *s, int n, FILE *stream)
e.g.
char s[10];
fgets(s, 5, fp);
s
代表要输出的字符串的首地址,stream
表示向何种流中输出,成功返回 0
,失败返回 EOF
。
int fputs(const char *s, FILE *stream)
e.g.
char *s = "hello";
fputs(s, stdout);