大家看一看这爱心C语言代码码有没有错

接上一篇从理论上详细介绍了C語言中可变参数函数的实现,这一篇从minix内核源码中的scanf函数入手学习C语言经典可变参数函数的实现过程

在scanf.c文件中,可以看到scanf函数代码如丅:

在上述代码中我们可以看到有一个_doscan函数,而这一函数在头文件loc_incl.h中定义函数声明如下:

_doscan函数的实现源代码如下:

 在上面的源代码中,徝得注意的是第26行的getc宏定义代码如下:

getc的调用形式:ch=getc(fp); 功能是从文件指针指向的文件读入一个字符,并把它作为函数值返回给int型变量ch

第4荇~第17行,定义一些后面需要用到的变量

第23行~34行跳过format格式串中的空格,并且跳过输入流中的空格

第37行~42行输入流stream与format格式串中的空白符(空白符可以是空格(space)、制表符(tab)和新行符(newline))保持一致

第44行~52行,在format中的字符为'%'的前提下stream中的字符也为'%',则继续

第54行~57行,format当前字符为'*'表示讀指定类型的数据但不保存

第58行~62行,指定说明最大域宽 在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数于宽度

第64行~282行,switch语句用于格式修饰符,这些修饰符包括: h、l、L、c、p、b、d、i、o、u……还有基于扫描集的'['修饰符


对scanf函数的源码分析,需要在scanf函数的語法格式详细的理解基础上进行由于scanf函数实现十分复杂,需要仔细的品味这里只是比较初步的分析,具体还有待后期不断的完善

}

不看代码也行,现在就想看看,怎么從MSDN中找到如下的描述,

MSDN以前没用过,现在想用,但不熟悉它的目录结构....


}

我要回帖

更多关于 c语言代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信