#include<string.h>的问题
为什么要有#include<string.h>,直接定义不行吗,什么时候要添加#include<.....h>呢,求大神讲解
为什么要有#include<string.h>,直接定义不行吗,什么时候要添加#include<.....h>呢,求大神讲解
2016-03-07
1.在C函数库中提供了一些用来专门处理字符串的函数,如果在程序中用到这些函数,则要在程序开始部分加上#include<string.h>,C语言函数函数库中的字符串处理函数都包含在string.h文件中。
2.#include指令称为预编译指令,用于将*.h文件中的信息调入到程序中以供使用。C编译系统在对源程序进行“翻译”以前先由一个“预处理器”(也叫“预处理程序”或“预编译器“)对预处理指令进行预处理,对于#include<string.h>指令来说,就是将string.h头文件中的内容读进来,放在#include指令行,取代了#include<string.h>。预处理的结果与程序其他部分一起,组成一个完整的、可以用来编译的最后的源程序,然后由编译程序对该源程序进行编译,才得到目标程序。
3.C语言提供两种预编译指令的格式,一种是用尖括号形式(如#include<staio.h>),编译系统将会从存放C编译系统的子目录中去找所要包含的文件,称为标准方式。另一种是用双撇号形式(如#includde"staio.h"),这适用于用户自己编写的头文件,你可以把自己想要定义的一系列执行同类问题的函数写进去,从而建立自己的函数库。对于C函数库中已经存在的,我们最好还是直接使用它,毕竟这些库函数只是一种工具而已。
1.因为在这一节中用到了字符串处理函数,例如strcat(),strlen()等,所有要在开头加入#include<string.h>,而其他章节虽然出现了字符串,但是你会发现他们并没有使用这些函数,所以不用加#include<string.h>。
2.其实在头文件(*.h)中只是声明了一些函数,预编译时根据你所声明的函数到C标准函数库中去找你要用到的函数。我们在写C程序时,都要在开头写上#include<stdio.h>(stdio即为standard input& output),实际上是因为我们使用了标准输入输出函数(如printf,scanf),如果你的程序不需要调用这些函数,完全可以不用加#include<stdio.h>,因为总是用到,所以成了约定俗成的东西。
3.举个不是很恰当的例子,好比病人去医院看病,医生给病人开了处方之后,病人要拿着处方去药房取药。这个医生开的处方就相当于一个头文件,里面开的药就相当于函数声明,药房就相当于一个C函数库,而药房里的药剂师根据处方上的药名取药,就相当于调用了这些库函数。最后将药交给病人,病人吃药,就相当于程序执行。(这个比喻不是很准确,但应该会对你的理解有所帮助)
4.其实我们在学习中对这个头文件不要过于纠结,常用的也就#include<stdio.h>、#include<string.h>、#include<math.h>(一些数学函数,如sqrt()求平方根),随着学习的深入,自然就能掌握头文件的使用和编写。建议提前看一下imooc的《Linux C语言编程基本原理与实践》课程的第四章多文件操作的课程。
举报