C语言文件相关操作整理
一、打开关闭文件
1.打开文件
FILE * fopen ( const char * filename, const char * mode );
- 成功则返回文件的指针,失败则返回 NULL。
- 任何打开的文件在不需要使用后都必须关闭。
2.关闭文件
int fclose ( FILE * stream );
- 成功返回0,失败返回 EOF,其值通常为 -1。
应用举例:
#include <stdio.h>
int main ()
{
FILE * pFile; //文件指针
pFile = fopen ("D:\\myfile.txt", "wb"); // 以二进制方式打开只写文件
if (pFile != NULL)
{
fputs ("fopen example", pFile);
fclose (pFile); // 用完后一定要记得关闭
}
return 0;
}
二、读文件
1.读取一个字符
int fgetc ( FILE * stream );
- 返回读取到的字符,读到文件末尾则返回 EOF。
2.读取字符串
char * fgets ( char * str, int num, FILE * stream );
- str 是将读取到的内容复制到的目标字符串数组
- num 是一次读取的大小
3.读取指定内存大小
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
- ptr 为目标内存块,其大小至少为 size * count
- size 是一次读取的字节大小
- count 是一次读取多少个 size
- 返回值是成功读取的字节大小
三、写文件
1.写一个字符
int fputc ( int character, FILE * stream );
- 成功则返回写入的字符,失败返回 EOF。
2.写入字符串
int fputs ( const char * str, FILE * stream );
- 成功返回一个正数,失败返回 EOF。
3.写入指定内存大小
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
- 返回成功写入的内存大小,单位为字节。
四、其他常用函数
1.文件指针位置重定位
int fseek ( FILE * stream, long int offset, int origin );
- 成功返回 0,失败返回一个非 0 数
- offset 指相应对 origin 位置处的偏移量,单位为字节
- origin 是指针的参考位置,有以下三个值可以选择
#define SEEK_CUR 1 // 当前位置
#define SEEK_END 2 // 末尾
#define SEEK_SET 0 // 开头
2.获取指针当前位置
long int ftell ( FILE * stream );
- 成功返回指针相对于开头的偏移量,失败返回 -1。
3.将缓冲区内容写入文件
int fflush ( FILE * stream );
- 成功返回 0,失败返回 EOF。
4.fprintf() 和 fscanf()
int fprintf ( FILE * stream, const char * format, ... );
int fscanf ( FILE * stream, const char * format, ... );
举例:
#include <stdio.h>
int main()
{
char str[80];
float f;
FILE * pFile;
pFile = fopen("D:\\myfile.txt", "w+");
// 在文件中写入 "PI is 3.1416" 这个内容
fprintf(pFile, "%s is %f", "PI", 3.14159f);
rewind(pFile); // rewind 函数将指针重新回到起始位置
fscanf(pFile, "%s is %f", str, &f);
fclose(pFile);
printf("I have read: %f and %s \n", f, str);
return 0;
}
五、删除和重命名文件
1. 重命名文件
int rename ( const char * oldname, const char * newname );
- 删除成功返回 0,失败返回非 0。
2.删除文件
int remove ( const char * filename );
- 删除成功返回 0,失败返回非 0。