🏠关于专栏:Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。
🎯每天努力一点点,技术变化看得见
C语言文件接口回顾
在开始介绍基础IO上篇的相关内容前,让我们先巩固一下C语言的文件操作
C语言中打开文件的方式及区别如下标所示↓↓↓
打开模式 | 描述 |
---|---|
r | 只读方式打开 |
r+ | 以读写方式,读写开始位置默认在文件开始 |
w | 以写方式打开,文件不存在则创建,存在则清空 |
w+ | 以读写方式打开,文件不存在则创建,存在则清空 |
a | 以追加方式打开,文件不存在则创建,文件存在则在文件末尾追加写入 |
a+ | 以追加与读方式打开,文件不存在则创建,读写位置默认在文件尾 |
下面是三个读写文件的函数
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
int fprintf(FILE *stream, const char *format, ...);
【代码示例1】r(只读)方式打开,结合fread函数↓↓↓
#include <stdio.h>
int main()
{
FILE* fp = open("./log.txt", "r");
char buffer[1024];
fread(buffer, sizeof(buffer), sizeof(char), fp);
printf("%s\n", buffer);
fclose(fp);
return 0;
}
【代码示例2】r+(读写)方式打开,结合fwrite、fread函数↓↓↓
#include <stdio.h>
#include <string.h>
int main()
{
FILE* fp = fopen("./log.txt", "r+");
char* msg = "xm";
fwrite(msg, strlen(msg), sizeof(char), fp);
char buffer[1024];
fread(buffer, sizeof(buffer) - 1, sizeof(char), fp);
printf("%s\n", buffer);
fclose(fp);
return 0;
}
【代码示例3】w(写)方式打开,结合fprintf函数↓↓↓
#include <stdio.h>
int main()
{
FILE* fp = fopen("./log.txt", "w");
fprintf(fp, "jammingpro\n");
fclose(fp);
return 0;
}
【代码示例3】w+(读写)方式打开,结合fseek、fread、fwrite函数↓↓↓
★ps:fseek的接口声明如下↓↓↓
int fseek(FILE *stream, long offset, int whence);
其中whence和offset可填写值和关系如下:
whence | offset |
---|---|
SEEK_SET | 从文件开始位置向后偏移n个位置 |
SEEK_CUR | 从当前位置向后偏移n个位置 |
SEEK_END | 从文件结尾位置向前偏移n个位置 |
#include <stdio.h>
#include <string.h>
int main()
{
FILE* fp = fopen("./log.txt", "w+");
char* msg = "jammingpro\n";
fwrite(msg, strlen(msg), sizeof(char), fp);
fseek(fp, 0, SEEK_SET);
char buffer[1024];