linux下使用fscanf实现scanf

本文探讨如何在Linux环境下使用fscanf函数来实现类似scanf的功能。通过讲解va_start、va_arg和va_end等宏的作用,展示了自定义可变参数函数的实现过程,并提供了一个简单的示例程序。对于想要深入了解Linux标准库函数实现的读者,这是一个有价值的参考。
摘要由CSDN通过智能技术生成


          首先,我们知道,linux下的scanf标准库函数是一个可变参的函数,那么,我们自己要实现一个scanf也必须是一个可变参的.

其实,在liunx的库中就提供了这样的的宏,来方便我们自己来实现变参函数.这个宏在stdarg.h头文件中.

这几个宏如下:

    void va_start( va_list   arg_ptr, prev_param ); //va_start宏初始化变量arg_ptr,这个宏的第二个参数是第 一个可变参数的前一个参数,是一个固定的参数.

   type va_arg( va_list   arg_ptr, type ); //a_arg返回可变的参数, va_arg的第二个 参数是你要返回的参数的类型,

   void va_end( va_list   arg_ptr ); //va_end宏结束可变参数的获取,
   va在这里是variable-argument(可变参数)的意思.

这几个宏的具体使用方法,百度上也有很多,不过为了方便这也给出了一个介绍其使用的博客:点击打开链接

     好了,下面就是我写的用fscanf来实现scanf的程序,如有不对之处,敬请指出...

/*************************************************************************
    > File Name: scanf.c
    > Author: yexingkong
    > Mail: abqyexingkong@gmail.com
    > Created Time: Wed 04 Sep 2013 16:23:17 CST
    > Description:用fscanf() 模拟scanf,此函数的不足之处在于对于flaot类型数的精确度不够,还未想到更好的解决方法.
 ************************************************************************/

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdint
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值