零.导言
C语言中有一系列的函数可以用于文件的读取和输入,今天就让我们来学习它们。
一.文件的打开和关闭
ANSI C规定:fopen 函数用来打开文件;fclose 函数用来关闭文件。
fopen(const * filename, const * mode);
fclose(FILE * stream);
那么,mode 有哪些呢?
mode | 使用方式含义 | 如果指定文件不存在 |
---|---|---|
“r” | 只读 | 出错 |
“w” | 只写 | 建立一个新的文件 |
“a” | 追加 | 建立一个新的文件 |
“rb” | 二进制只读 | 出错 |
“wb” | 二进制只写 | 建立一个新的文件 |
“ab” | 二进制追加 | 建立一个新的文件 |
“r+” | 打开读写 | 出错 |
“w+” | 建立读写 | 建立一个新的文件 |
“a+” | 建立读写 | 建立一个新的文件 |
“rb+” | 二进制打开读写 | 出错 |
“wb+” | 二进制建立读写 | 建立一个新的文件 |
“ab+” | 二进制建立读写 | 建立一个新的文件 |
打开文件:
关闭文件:
注意:此处"date.txt"表示相对路径,位于你存放.cpp文件的文件夹内。
pf == NULL,是为了避免野指针的存在。
二.顺序读写函数
如下:
函数 | 使用 |
---|---|
fgetc | 字符输入 |
fputc | 字符输出 |
fgets | 字符串输入 |
fputs | 字符串输出 |
fscanf | 格式化输入 |
fsprintf | 格式化输出 |
fread | 字符输入 |
fwrite | 字符输出 |
接下来我会逐个讲解
三.fgetc与fputc
fgetc:
while(int ch = fgetc(pf) != EOF)
{
printf("%c",ch);
}
此操作可以在pf指向的文件中读取所有字母,并打印出来。
按 Ctrl + z 停止;
fputc:
for (char c = 'a'; c < 'z'; c++)
{
fputc(c, pf);
}
此操作可以在pf指向的文件中写入从'a'到'z'一共26个字母。
四.fgets与fputs
同理,和fgetc与fputc的用法差异不大:
fgets:
char str[100];
FILE* pf = fopen("date.txt","r");
if (pf == NULL)
{
perror("fopen");
return 1;
}
while (fgets(str, 100, pf) != NULL)
{
printf("%s", str);
}
fclose(pf);
pf = NULL;
这样,就读取并打印了字符串。
fputs:
FILE* pf = fopen("date.txt","w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
fputs("ciallo bite\n",pf);
fputs("ciallo everyone\n",pf);
fclose(pf);
pf = NULL;
这样,就写入了字符串。
由于篇幅,下一篇我会继续介绍文件FILE相关函数,完