fscanf 函数学习笔记

一级目录

二级目录

三级目录##

一、学习视频来自b站

网址:https://www.bilibili.com/video/BV1hx411U7jB?from=search&seid=8830558900216097559

二、学习过程:

2.1 建立文件

在这里插入图片描述
这是第一个txt文件,为了下面路径简单明了,放到D盘;路径为D:\\test1.txt ,关于路径请查看我的另一篇问章,在这里 \\两个斜杠,其中一个是转义字符的意思,如果写/则只用写一个。

在这里插入图片描述
这个文件同样也放到D盘,D:\test2.txt
在这里插入图片描述
程序中提到"行",空格和换行都停止读取,所以test2 文件也可这么写。

2.2 程序

// 文件操作.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
#define SIZE 100
int _tmain(int argc, _TCHAR* argv[])
{
	FILE *fp1,*fp2;
	char *filename1="D:\\test1.txt";
	char *filename2="D:\\test2.txt";
	char buf[SIZE] = {0};
	char errcode;
	char count;

	int num1,num2,num3;
	fp1=fopen(filename1,"r");
	fp2=fopen(filename2,"r");

	//if( (fp=fopen(filename,"r"))==NULL  )
	//	{fprintf(stderr,"%s,%s\n",filename,"open failed!");//stderr 输出到屏幕;是个文件指针
	//	 system("pause");
	//	 return -1;
	//	}else printf("successfully open\n");

	/*----------读取字符串----------*/
	//count = fscanf(fp, "%s",buf);//fscanf 返回格式化参数的个数
	//%s读的是一个单词,字符串,遇到空格、换行会停止读取
	//count = fscanf(fp, "%[^\n]",buf);//读取完整一行的代码//需代替 do-while 循环
	
	//用循环读
	printf("\n/*------------读取test1.txt------------\n");
	do //用循环读的时候""
	{	count = fscanf(fp1, "%s",buf);
		if(count>0)
		{
			fprintf(stderr,"%s   ",buf);//???最后一个参数怎么是地址呢?这里还不太明白。
		 }else{ if(feof(fp1))
				{
					fprintf(stderr,"%s \n", "file end!");
				 } else 
					{
						errcode=ferror(fp1); //ferror检查调用函数是否出错;返回值非0是出错了
						fprintf(stderr, "%s \n", strerror(errcode)); //strerror 查找错误号
					 }
			   }
			}
	while(count>0);

	
	/*----------读数字----------*/
	//fscanf 是按行读取,遇到空格、换行都会停止。(空格和换行都是循环停止的标志,空格可以有多个)
	//这里的"行"空格之间也可以看作一行。
	//数字之间有,号可以一直读完这一行,逗号之间就是一个数字,这个数可以给赋给一个变量。
	printf("\n/*------------读取test2.txt------------\n");
	do{ 

		count = fscanf(fp2, "%d,%d,%d",&num1,&num2,&num3);
		//count是每次读取时,这一行的数据个数(在不遇到空格和换行符时)
		if(count>0)
		{
			fprintf(stderr,"%d %d %d\n",num1,num2,num3);//输出
			printf(" num1=%d\n num2=%d\n num3=%d\n",num1,num2,num3);
			printf("这一行有%d个数\n\n",count);
		 }else{ if(feof(fp2))
				{
					fprintf(stderr,"%d \n", "file end!"); //到文件结尾标志。
				 } else 
					{
						errcode=ferror(fp2); //ferror检查调用函数是否出错;返回值非0是出错了
						fprintf(stderr, "%s \n", strerror(errcode)); //strerror 查找错误号
						printf("有错误了\n");
					 }
			   }
			
	}while((count)>0);
	system("pause");
	return 0;
}



运行结果在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值