使用C语言对文件进行操作的情况较少,对文件函数的使用就会较少,为了方便复习,我把一些常用的文件读写函数汇总在一起,有一些参数介绍相对笼统,但是不影响函数的使用。同样本篇还是最适用于有一定C语言基础的同学哦,如有不足还望指出纠正。
1. 单个字符读写函数
int fputc(int character, FILE*stream);
第一个参数是字符的阿斯克码值,第二个参数是需要写入的文件的文件指针
函数写入成功会返回写入字符的阿斯克码值,否则返回EOF
int fgetc(FILE*stream);
函数的参数是一个文件指针。
如果读取成功,函数返回值是读取到的字符的阿斯克码值,失败则返回EOF
2. 字符串读写函数
int fputs(const char* str, FILE* stream);
字符串写入函数,第一个参数是要写入的字符串,第二个参数是文件指针
函数执行成功,返回一个非负数,失败返回EOF
char* fgetc(char* str, int num, FILE*stream);
第一个参数是读取到的字符串拷贝的地址、第二个参数是最大的字符个数(包含'\0')、第三个参数是文件指针。
如果函数执行成功,函数返回str的起始地址,失败则返回NULL
3. 格式化输入输出函数
fprintf和fscanf函数分别是向文件中格式化输出数据和格式化输入数据,第一个参数都是文件指针,后面的参数跟printf和scanf的用法一致
fprintf函数例子:
FILE* pf = fopen("file.txt", "w");
assert(pf != NULL);
char name[] = "zhangsan";
char gender[] = "male";
char age = 23;
// 将这三个信息保存在文件中
fprintf(pf, "%s %s %d", name, gender, age);
fclose(pf);
文件效果:
fscanf函数例子:
FILE* pf = fopen("file.txt", "r");
assert(pf != NULL);
char name[10];
char gender[5];
int age;
// 把文件中的数据赋值给上面的三个变量中
fscanf(pf, "%s %s %d", name, gender, &age);
fclose(pf);
效果:
4. 二进制输入输出函数
size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);
这个函数是以二进制写入文件数据,第一个参数是需要写入数据的指针,第二个是一个元素的大小,第三个是写入元素的个数,最后一个参数是文件指针
举个例子:创建一个结构体变量把信息存放到文件中
struct Stu
{
char name[10];
char gender[5];
int age;
};
int main()
{
struct Stu s = { "zhangsan", "male", 20 };
FILE* pf = fopen("file.txt", "wb");
assert(pf != NULL);
fwrite(&s, sizeof(s), 1, pf);
fclose(pf);
return 0;
}
存放到文件中的效果
size_t fread(void* ptr, size_t size, size_t count, FILE* stream);
这个函数是以二进制读取文件数据,第一个参数是读取到的数据保存的位置的地址,第二个是一个元素的大小,第三个是读取元素的个数,最后一个参数是文件指针
struct Stu
{
char name[10];
char gender[5];
int age;
};
int main()
{
struct Stu s;
FILE* pf = fopen("file.txt", "rb");
assert(pf != NULL);
fread(&s, sizeof(s), 1, pf);
fclose(pf);
return 0;
}
效果