C读写文件
使用 fopen(文件名,访问模式) 函数来打开文件,一般有getc/putc , fgets/fputs , fscanf/fprintf , fread/fwrite 四大家族来读写文件。
关于文件访问模式有如下的选择:
访问模式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
1、getc/putc家族读写文件
int getc(FILE *stream) :从文件读取字符, 一次读取一个字符,并把位置标识符往前移动。
参数:指向 FILE 对象的指针
返回值:以 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。
int putc(int c , FILE *stream):将指定的字符输出到指定的输出流中,并把位置标识符往前移动。
参数:c – 要被写入的字符,该字符以其对应的 int 值进行传递。
stream – 指向 FILE 对象的指针
返回值:以 int 的形式返回写入的字符,如果发生错误则返回 EOF
使用示例:
#include <stdio.h>
//读一个字符
int main(int argc,char *argv[])
{
FILE *p = fopen("/Users/Devin/Desktop/a.txt", "r");
if (p == NULL)
{
printf("文件打开失败\n");
}
else
{
char c = 0;
while( (c = getc(p)) != EOF)//EOF代表文件最后的一个结束标示
{
printf("%c", c);
}
//使用完,关闭文件
fclose(p);
}
re