• fscanf函数的用法


    fscanf函数用法

    简要介绍

    fscanf()函数是格式化读写函数。它读取的对象是磁盘文件

    函数原型:

    int fscanf(FILE * fp,char * format,...);
    

    其中fp为文件指针,format为C字符串,...为参数列表,返回值为成功写入的字符的个数。

    fscanf函数会从文件输入流中读入数据,存储到format中,遇到空格和换行时结束

    使用示例

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct {
    	int id;					//学生id
    	char name[30];			//学生姓名
    	char address[100];		//学生地址
    }Student;
    
    int main()
    {
    	Student student;
    	FILE* fp = fopen("D:\markdown.txt", "wt+");
    	if (fp == NULL)
    	{
    		puts("文件不存在,请在指定目录下先行创建文件!");
    		exit(0);
    	}
    
    	printf("请依次输入学生的id,姓名和地址:
    ");
    	scanf("%d%s%s", &student.id, student.name, student.address);
    
    	//将学生信息存入D:\markdown.txt文件中
    	fprintf(fp, "%d	%s	%s
    ", student.id, student.name, student.address);
    
    	Student temp;
    	//重置文件指针
    	rewind(fp);
    	//将文件中的信息读取出来并且存储到temp中
    	fscanf(fp, "%d	%s	%s
    ", &temp.id, temp.name, temp.address);
    
    	printf("第%d位学生的姓名为:%s,地址为%s
    ", temp.id, temp.name, temp.address);
    	
    	fclose(fp);
    
    	return 0;
    }
    

    运行结果:

    请依次输入学生的id,姓名和地址:
    1
    yaya
    未知
    第1位学生的姓名为:yaya,地址为未知
    

    注意点

    1、fscanf函数在文件输入流中读取数据时,遇到空格或者换行会结束读取,如果要忽略换行符的影响,可以使用

    fscanf(fp, "%[^
    ]", test);
    

    在上面的这条语句中,%[]表示读取指定字符集,即%[0-2]为读取0~2之间的数字(包括0和2),^ 表示反向读取,即读取指定字符集以外的字符,遇到指定字符就停止(不会读取指定字符)。所以%[^ ]表示读取字符直到遇到 为止。

    如果要将换行符读取掉,但不存储到变量中,可以采用

    fscanf(fp, "%[^
    ]%*c", test);
    

    2、scanf和fscanf的相互转换

    char name[10] = "";
    scanf("%[0-2]", name);				//等价于下一句
    fscanf(stdin, "%[0-2]", name);		//等价于上一句
    printf("%s", name);
  • 相关阅读:
    修改apache的默认访问目录
    禁止浏览器直接访问php文件
    使用Apache Bench进行压力测试
    关于mysql(或MariaDB)中的用户账号格式
    单表查询
    CSS设计指南之一 HTML标记与文档结构
    SQL SERVER技术内幕之10 可编程对象
    SQL SERVER技术内幕之10 事务并发
    观察者模式
    中介者模式
  • 原文地址:https://www.cnblogs.com/yaya12138/p/11329319.html
Copyright © 2020-2023  润新知