文件流简单的概念我就不多说了,想要了解的可以参考:C语言 文件操作相关概念_流楚丶格念的博客-优快云博客
目录
以字符的方式读
以字符的方式写
以字符串的方式读
以字符串的方式写
格式化写 fprintf
格式化写 fscanf
一. 以字符的方式读
代码如下:
//文件的英文是file
//首先创建一个文件类型的指针fp fp可以理解为 file ptr
FILE* fp;
//fopen函数是打开文件,返回类型是FILE* 类型的值
//第一个参数是文件名,第二个是打开方式。
//"r"类型:只读,文件不存在则打开文件失败
//打开方式的表格在后文呈现
fp = fopen("1.txt", "r");
if (fp == NULL)
{
printf("文件打开失败\n");
}
//fp != NULL时 打开文件成功
else
{
//在else里面对文件进行读的操作
//fgetc函数是从文件里面读取一个字符 然后赋值给ch
//参数为函数指针fp
char ch = fgetc(fp);
putchar(ch);
//EOF end of file 文件的尾部
while (ch != EOF)
{
//当ch!= EOF时进入循环
ch = fgetc(fp); //文件的字符赋给ch
putchar(ch); //输出字符ch
}
//文件打开一定要关闭
//使用fclose 函数 参数是文件指针fp
fclose(fp);
}
可以看到读取文件成功
C语言文件操作模式表
二. 以字符的方式写
代码如下:
FILE* fp;
fp = fopen("1.txt", "w");
//判断一下文件是否打开
if (fp == NULL)
{
printf("文件打开失败\n");
return;
}
//文件的写入用函数fputc
//这里我们写入一些字母
for (int i = 0; i < 26; i++)
{
char ch = 'a' + i;
//putc函数的第一个参数是 字符
//第二个参数是文件指针
putc(ch, fp);
}
fclose(fp);
三 以字符串的方式读
代码如下:
FILE* fp;
fp = fopen("1.txt", "r");
//判断一下文件是否打开
if (fp == NULL)
{
printf("文件打开失败\n");
return;
}
//字符串的方式 fgets
char buf[200];
//fgets的第一个参数buf是保存从文件读出来的字符串的
//200是buf的大小
//fp 是文件指针,从fp中读入
fgets(buf, 200, fp);
puts(buf);
fclose(fp);
这里我们把刚刚的26个字母读了出来,碰到换行就停止读取。
四 以字符串的方式写
代码如下:
FILE* fp;
fp = fopen("1.txt", "w");
//判断一下文件是否打开
if (fp == NULL)
{
printf("文件打开失败\n");
return;
}
//字符串的方式 fputs
char buf[200] = "Hello World\nsauidh";
//参数1 要写入文件的字符串,
//参数2 fp 写进fp中
fputs(buf, fp);
fclose(fp);
文件里面的内容:
五 格式化写 fprintf
fprintf一般针对将结构体写入文件。
//定义一个结构体
typedef struct Student
{
int age;
char name[20];
}Student;
FILE* fp;
fp = fopen("1.txt", "w");
//判断一下文件是否打开
if (fp == NULL)
{
printf("文件打开失败\n");
return;
}
Student s1 = { 18,"张三" };
//fprintf与printf 的区别在于多了一个参数
//fp 写入到fp中去
//剩下两个和printf的参数用法一样
fprintf(fp, " %d %s", s1.age, s1.name);
fclose(fp);
六 格式化写 fscanf
//定义一个结构体
typedef struct Student
{
int age;
char name[20];
}Student;
FILE* fp;
fp = fopen("1.txt", "r");
//判断一下文件是否打开
if (fp == NULL)
{
printf("文件打开失败\n");
return;
}
Student s1 = { 0 };
//fp 从fp的读
fscanf(fp, "%d %s", &s1.age, s1.name);
//在控制台上打、打印出s1的信息
printf("%d %s", s1.age, s1.name);
fclose(fp);
七 改变文件指针的位置
FILE* fp = fopen("1.txt", "w+");
char name1[11] = "我是666";
fputs(name1, fp);
char name[100];
//rewind(fp); 指针的移动到文件头
fseek(fp, 2, SEEK_SET); //指针从开头移动两个字节
fgets(name,100,fp);
puts(name);
fclose(fp);