【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)

这篇具有很好参考价值的文章主要介绍了【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)

1.什么是文件

磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。

程序文件

包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境
后缀为.exe)。

数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,
或者输出内容的文件。
本章讨论的是数据文件。
在以前各章所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显
示器上。
其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理
的就是磁盘上文件。

2.文件的打开与使用

1.文件指针

(此次博文以vs2013示例 )
在vs2013中,有这么一份代码

struct _iobuf {
        char *_ptr;
        int   _cnt;
        char *_base;
        int   _flag;
        int   _file;
        int   _charbuf;
        int   _bufsiz;
        char *_tmpfname;
       };
typedef struct _iobuf FILE;

该代码是由vs自行提供的,主要目的是方便用户的使用
每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,
使用者不必关心细节。
一般都是通过一个FILE的指针来维护这个FILE结构的变量,。所以当我们们想要读写一个文件时,可以很好的来使用它。下面我们用一串代码实现读文件,而打开文件有着多种操作命令,我们先来认识一下。

  • “r”(只读): 为了输入数据,打开一个已经存在的文本文件。如果文件不存在,则会出错。
  • “w”(只写): 为了输出数据,打开一个文本文件。如果文件不存在,则会创建一个新的文件。
  • “a”(追加): 向文本文件尾添加数据。如果文件不存在,则会创建一个新的文件。
  • “rb”(只读): 为了输入数据,打开一个二进制文件。如果文件不存在,则会出错。
  • “wb”(只写): 为了输出数据,打开一个二进制文件。如果文件不存在,则会创建一个新的文件。
  • “ab”(追加): 向一个二进制文件尾添加数据。如果文件不存在,则会创建一个新的文件。
  • “r+”(读写): 为了读和写,打开一个文本文件。如果文件不存在,则会出错。
  • “w+”(读写): 为了读和写,建议一个新的文件。如果文件不存在,则会创建一个新的文件。
  • “a+”(读写): 打开一个文件,在文件尾进行读写。如果文件不存在,则会创建一个新的文件。
  • “rb+”(读写): 为了读和写打开一个二进制文件。如果文件不存在,则会出错。
  • “wb+”(读写): 为了读和写,新建一个新的二进制文件。如果文件不存在,则会创建一个新的文件。
  • “ab+”(读写): 打开一个二进制文件,在文件尾进行读和写。如果文件不存在,则会创建一个新的文件。

2.1文件的打开与关闭

【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)
掌握了文件的打开与关闭后,我们就可以用指令来完成一些简单的文件操作了

3.文件的读与写

函数名称 适用流
fgetc 所有输入流
fputc 所有输出流
fgets 所有输入流
fputs 所有输出流
fscanf 所有输入流
fprintf 所有输出流

3.1 fgetc与fputc

*int fgetc(FILE stream)
参数
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操作的流。
返回值
该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

*int fputc(int char, FILE stream)
参数
char – 这是要被写入的字符。该字符以其对应的 int 值进行传递。
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符的流。
返回值
如果没有发生错误,则返回被写入的字符。如果发生错误,则返回 EOF,并设置错误标识符。
代码实现


int main()
{
	FILE* file = fopen("file.txt", "wb");//打开一个文件,以二进制输出的方式打开;
	if (file == NULL)//判断文件指针是否接收成功
	{
		perror("file");
		return;
	}
	for (int i = 'a'; i <= 'z'; i++)//循环写入
	{
		fputc(i, file);
	}
	fclose(file);//关闭文件
	file = NULL;//释放内存

	return 0;
}

当完成代码写入后,我们的项目文件下就会多一个自行创建的文件夹,切内容为字符a开始,字符z结尾;
【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)

int main()
{
	FILE* file = fopen("file.txt", "rb");//打开一个文件,以二进制输入的方式打开;
	if (file == NULL)//判断文件指针是否接收成功
	{
		perror("file");
		return;
	}
	char arr;
	for (int i = 0; i < 32; i++)//循环输入
	{
		arr =fgetc(file);
		printf("%c ", arr);
	}
	fclose(file);//关闭文件
	file = NULL;//释放内存

	return 0;
}

输入结果
【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)

3.2fgets与fputs

**char *fgets(char str, int n, FILE stream)
参数
str – 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
n – 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。
返回值
如果成功,该函数返回相同的 str 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针。

如果发生错误,返回一个空指针。

**int fputs(const char str, FILE stream)
参数
str – 这是一个数组,包含了要写入的以空字符终止的字符序列。
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符串的流。
返回值
该函数返回一个非负值,如果发生错误则返回 EOF。
代码实现
fputs与fputc的差别就在于一个一次输出一串字符,一个一次输出一个字符

int main()
{
	FILE* file = fopen("file.txt", "wb");//打开一个文件,以二进制输入的方式打开;
	if (file == NULL)//判断文件指针是否接收成功
	{
		perror("file");
		return;
	}
	fputs("hello,world", file);//输出字符
	fclose(file);//关闭文件
	file = NULL;//释放内存

	return 0;
}

【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)
接下来使用fgtes输入

int main()
{
	FILE* file = fopen("file.txt", "rb");//打开一个文件,以二进制输入的方式打开;
	if (file == NULL)//判断文件指针是否接收成功
	{
		perror("file");
		return;
	}
	char arr[20];//创建数组接收从文件中输入的字符串
	int len = strlen("hello,world");
	fgets(arr,len+1, file);//输入字符串,fgtes的特性会导致'\0'也算一个字符,所以+1;
	printf("%s", arr);//打印
	fclose(file);//关闭文件
	file = NULL;//释放内存

	return 0;
}

【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)

3.3fprintf与fscanf

**int fprintf(FILE stream, const char format, …)
参数
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
format – 这是 C 字符串,包含了要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化
返回值
如果成功,则返回写入的字符总数,否则返回一个负数。

**int fscanf(FILE stream, const char format, …)
参数
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
format – 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
返回值
如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。

struct s//定义一个结构体
{
	char arr[10];
	int b;
	char c[10];
};
int main()
{
	FILE* file = fopen("file.txt", "wb");//打开一个文件,以二进制输入的方式打开;
	if (file == NULL)//判断文件指针是否接收成功
	{
		perror("file");
		return;
	}
	struct s i = { 'a',100,'c' };//结构体初始化
	fprintf(file, "%s %d %s", i.arr, i.b, i.c);//输出到文件中
	fclose(file);//关闭文件
	file = NULL;//释放内存

	return 0;
}

运行结果
【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)

struct s//定义一个结构体
{
	char arr[10];
	int b;
	char c[10];
};
int main()
{
	FILE* file = fopen("file.txt", "rb");//打开一个文件,以二进制输入的方式打开;
	if (file == NULL)//判断文件指针是否接收成功
	{
		perror("file");
		return;
	}
	struct s i = { 0 };//结构体初始化
	fscanf(file, "%s %d %s", i.arr, &(i.b), i.c);
	printf("%s %d %s", i.arr, i.b, i.c);
	fclose(file);
	file = NULL;//释放内存

	return 0;
}

【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)
fprintf和fscanf的输出输入是多样的,只要你传递给他正确的格式即可

谢谢观看。文章来源地址https://www.toymoban.com/news/detail-512712.html

到了这里,关于【C语言11】文件操作(fgtec,fputc,fgets,fputs,fscanf,fprintf)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C 语言用户输入详解:scanf、fgets、内存地址解析及实用指南

    您已经学习了 printf() 函数用于在 C 语言中输出值。 要获取用户输入,可以使用 scanf() 函数: scanf() 函数接受两个参数:变量的格式说明符(在本例中为 %d )和引用运算符( myNum ),用于存储变量的内存地址。 scanf() 函数还允许进行多个输入(例如,在下面的例子中,用户可

    2024年02月03日
    浏览(57)
  • 【正点原子STM32】SYSTEM文件夹介绍(sys文件夹、deley文件夹、USART 文件夹、SysTick、printf函数、fputc函数、半主机模式)

    一、sys文件夹介绍 二、deley文件夹介绍 2.1、deley文件夹函数简介 2.2、SysTick工作原理 2.3、SysTick寄存器介绍 2.4、delay_init()函数 2.5、delay_us()函数 2.6、delay_ms()函数 三、USART 文件夹介绍 3.1、printf函数输出流程 3.2、printf的使用 3.3、printf函数支持 半主机模式简介 方法一:微库法

    2024年03月11日
    浏览(81)
  • C语言从入门到精通第11天(数组的基本操作)

    在程序设计中,为了方便处理数据把具有 相同类型 的若干变量按有序形式集合在一起,这些按序排列的同类数据元素的集合称为数组。 在C语言中,数组属于构造数据类型,一个数组可以分解为多个数组数组元素,这些数组的元素可以是基本数据类型或构造数据类型。因此按

    2024年02月01日
    浏览(43)
  • C语言——文件操作(2)文件的读写操作

            之前,我讲解了文件的基本情况与读写模式,看到这篇博客的小伙伴们先参考这篇博客:  C语言——文件操作详解(1)_         接下来,我会继续讲解文件操作的第二大步:文件读/写操作。 目录         A.文件的顺序读写         一.字符输入输出函数 

    2024年02月09日
    浏览(39)
  • 【探索Linux】—— 强大的命令行工具 P.11(基础IO,文件操作)

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代码也相信大家都掌握的不错,上一篇文章我们了解了关于进程的地址空间,今

    2024年02月08日
    浏览(51)
  • C语言文件操作(文件读写)

    本文主要介绍C语言中文件操作的相关内容(例:文件读、写等相关函数)。 在对计算机的使用中我们几乎离不开文件。例如常见的有word 文档,txt文本文件,图片文件、音频文件等。 文件是以计算机硬盘为载体存储在计算机上的信息集合。是数据源的一种,最主要的作用是保

    2024年02月02日
    浏览(42)
  • 【C语言】详解文件与文件操作

    文件是记录在外存上的相关信息的命名组合,但是在程序设计中,我们⼀般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。 程序文件包括: 源程序文件 (后缀为.c) 目标文件 (windows环境后缀为.obj) 可执行程序 (windows环境后缀为.exe) 文件的内容

    2024年01月22日
    浏览(38)
  • 【FPGA/verilog -入门学习11】verilogTestbench中的文本文件写入,读出,打印等操作

    本文参考:Verilog中的系统任务(显示/打印类)--$display, $write,$strobe,$monitor-CSDN博客 Verilog:parameter、localparam的区别和用法-CSDN博客 Verilog的系统任务----$fopen、$fclose和$fdisplay, $fwrite,$fstrobe,$fmonitor_verilog fopen-CSDN博客 Verilog的系统任务----$readmemh和$readmemb-CSDN博客 $display可以

    2024年02月03日
    浏览(44)
  • [][R语言]股票分析实战[11]:读取股票数据文件的细节: 提取目标列数据

    [简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C++ Builder 技能种类

    2024年01月21日
    浏览(40)
  • 【详识C语言】C语言文件操作

    1. 为什么使用文件 2. 什么是文件 3. 文件的打开和关闭 4. 文件的顺序读写 5. 文件的随机读写 6. 文本文件和二进制文件 7. 文件读取结束的判定 8. 文件缓冲区 我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数 据,此时数据是

    2024年03月12日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包