ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于流(文件)的输入,输出与调用(fprintf,fscanf)

2021-10-17 16:03:47  阅读:167  来源: 互联网

标签:fp 文件 调用 函数 format fscanf fprintf


fprintf()函数

fprintf()函数用于将字符集输出文件。它将格式化的输出发送到流,一般用于文件内容的调用。将agars(参数表)内各项的值,按format(格式控制字符串)所表示的格式,将数据格式为字符串的形式写入到文件指针fp指向的文件中。

原型:fprintf(FILE *fp, const char *format, agars)

具体参照以下示例:

int main()
{
	FILE* fp;//定义指向文件类型的指针
	int a[10000];
	int i, j, n, temp;
	//二,创建一个有序线性表
	if ((fp = fopen("D:\\work\\SeqList work\\data10000.txt", "r")) == NULL)
		//以只读的方式打开文件data10000,若打开失败则返回NULL.Vs中对路径的识别为"\\"
	{
		fprintf(stderr, "Error opening file.");//从字符输出到流,故用fprintf函数,stderr为标准错误输出设备
		exit(0);

fscanf()函数
fscanf()函数的头文件是<stdio.h>.用于将字符集写入文件。

函数原型 为 int fscanf(FILE*stream, constchar*format, [argument...]);其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);

【参数】stream为文件指针,format为格式化字符串,argument 为格式化控制符对应的参数。

从文件指针fp指向的文件中,按format中对应的控制格式读取数据,并存储在agars对应的变量中;原型: fscanf(FILE *fp, const char *format, agars)

具体参照以下示例:

if ((fp = fopen("D:\\work\\SeqList work\\data10000.txt", "r")) == NULL)
		//以只读的方式打开文件data10000,若打开失败则返回NULL.Vs中对路径的识别为"\\"
	{
		fprintf(stderr, "Error opening file.");//从字符输出到流,故用fprintf函数,stderr为标准错误输出设备
		exit(0);

	}
	else if (n = N > 10000)//判断插入顺序是否合理
	{
		printf("Data overflow!please try again!");
		exit(0);

	}
	else for (; n < N; n++)//比较插入元素与有序表中元素位置并插入
    fscanf(fp, "%d", &temp);//从一个流中执行格式化输入

注意在vs编译环境下,调用fprintf与fscanf函数会报错。根本原因是我们在编译老的用C语言的开源项目如lua源包的时候,可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数,而报警告和错误,而导致无法编译通过。

解决方法:在程序的最开始定义一个宏,如图所示,此方法对该文件有效。

#define _CRT_SECURE_NO_WARNINGS//vs中fprintf,fscanf中不被识别
#define UNREFERENCED_VALUE(P)          (P)//忽略编译器warning
#include<stdio.h>
#include<stdlib.h>
#define N 10000
int main()

同理,也可以在项目属性里设置,这会在整个项目里生效,依次选择:属性->配置属性->C/C++ ->预处理器->预处理器定义->编辑

最下面加上一行:_CRT_SECURE_NO_WARNINGS   (注意不需要#define)

如下图所示:

标签:fp,文件,调用,函数,format,fscanf,fprintf
来源: https://blog.csdn.net/Frodo_W/article/details/120756500

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有