C语言 文件基本读写操作

目录

  • C语言 文件读写操作
    • 文件打开模式
    • 文件操作函数
      • fopen()——打开文件
      • fclose()——关闭文件流
      • fputs()——写入字符串
      • fgets()——获取文件内容
      • fscanf ()——格式化获取文件内容
      • fprintf ()——格式化写入字符串
    • 打开文件实例
    • 读写文件实例

C语言 文件读写操作

最近在写c语言课设,接触到很多新知识,所有在此记录自己的所得。
就不扯那么多底层的东西了,直接上相关知识

文件打开模式

打开模式 说明(只读=就是只能读取,只写=就是只能写入)
w 只写 的方式打开,并清空文件数据,若文件不存在则 新建文件
r 只读 的方式打开,若文件不存在,则文件打开失败
a 只写/追加 的方式打开,若文件不存在,则文件打开失败
w+ 读写 的方式打开,并清空文件数据,若文件不存在则新建文件
r+ 读写 的方式打开,若文件不存在,则文件打开失败
a+ 读写/追加 的方式打开,若文件不存在,则文件打开失败

打开二进制的,打开模式,同上,后面加个b:wb, rb , ab , wb + 。。。

文件操作函数

fopen()——打开文件

原型:FILE* fopen(char const* _FileName , char const* _Mode );

  1. fopen打开失败的原因:1,路径错误 。 2,文件不存在 。
形参 说明
char const* _FileName 文件的路径
char const* _Mode 文件打开模式
返回值 说明
FILE* 文件指针
NULL 文件打开失败

fclose()——关闭文件流

原型:int fclose( FILE* _Stream );

  1. 通常在文件操作完成后,使用fclose()来关闭文件流
  2. 文件光标指针返回第一行。
形参 说明
FILE* _Stream 已经打开的文件指针

fputs()——写入字符串

原型:int fputs( char const* _Buffer, FILE* _Stream );

  1. 如果你之前fopen打开的文件模式,不是只写,或者读写,编译器会报错
  2. 写入成功返回0 ,失败返回非零的值。
形参 说明
char const* _Buffer 传入一个自定义的字符数组,或指针
FILE* _Stream 已经打开的文件指针

fgets()——获取文件内容

原型:char* fgets( char* _Buffer, int _MaxCount, FILE* _Stream);

  1. 要确保buffer数组的长度为1024,MaxCount也为1024.
  2. 函数第n次运行后,文件光标指针自动移到n+1行,下一次使用fgets,将在第n+1行读取数据

例如:没有使用fgets前,光标指针位置
C语言 文件基本读写操作_第1张图片
使用fgets后,光标指针位置
C语言 文件基本读写操作_第2张图片

形参 说明
char* _Buffer 传入一个自定义的字符数组,或指针
int _MaxCount 最大字符数(1024)
FILE* _Streamt 已经打开的文件指针

fscanf ()——格式化获取文件内容

原型:int fscanf ( FILE *fp, char * format, … );

  1. 跟 scanf 读取格式化的操作基本一样。
  2. 读取文件成功:返回参数列表中被成功赋值的参数个数。
形参 说明
char * format 传入格式化操作符:%d,%s,%f 之类的
FILE* _Streamt 已经打开的文件指针

fprintf ()——格式化写入字符串

原型:int fprintf ( FILE *fp, char * format, … );

  1. 跟 printf 输出格式化的操作基本一样。
  2. 写入成功:返回成功写入的字符的个数,失败则返回负数。
形参 说明
char * format 传入格式化操作符:%d,%s,%f 之类的
FILE* _Streamt 已经打开的文件指针

打开文件实例

我们用vs2017打开新建一个文件

//输入以下代码
#include 

int main() {
	//1.创建文件结构指针
	//2.传入test.txt这个相对路径下的文件
	//3.使用w操作符新建文件
	FILE *filepointer = fopen("test.txt","w");
	if (filepointer==NULL) {
		printf("文件打开失败");
	}
	else {
		printf("文件打开成功");
	}
	return 0;
}

然后点击运行工具栏的本地windows调速器运行代码,
会出现下图:
C语言 文件基本读写操作_第3张图片
这里我们要注意了,vs2017对一些函数进行了修改,像fopen,printf,scanf函数都被弃用。
解决方法——点击链接:https://blog.csdn.net/qq_31254489/article/details/105548474

解决函数不安全的问题后,得到结果:

C语言 文件基本读写操作_第4张图片


读写文件实例

#include 

int main() {

	FILE *filepointer = fopen("test.txt","w+");
	if (filepointer==NULL) {
		printf("文件打开失败");
	}
	else {
		printf("文件打开成功\n");
		//fputs向文件写入字符串
		fputs("fputs测试\n",filepointer);
		//fprintf向文件写入字符串
		fprintf(filepointer, "fprintf测试(无参数)\n");
		fprintf(filepointer, "fprintf测试(有参数):%d,%s \n",1,"参数2");
		
	}
	//关闭文件
	fclose(filepointer);
	//以读写的方式打开文件
	filepointer = fopen("test.txt","r+");
	//创建缓冲区
	char buf[1024];
	//fget读取文件字符串,并将光标移到下一行
	fgets(buf, 1024, filepointer);
	printf("fputs输出:%s", buf);

	//fscanf读取文件字符串,并将光标移到下一行
	fscanf(filepointer,"%s", buf);
	printf("fscanf输出:%s\n", buf);

	fscanf(filepointer, "%s", buf);
	printf("fscanf输出:%s", buf);

	return 0;

}

运行得到结果:

C语言 文件基本读写操作_第5张图片
使用fsancf要注意回车符"\n"的处理。

你可能感兴趣的:(C语言)