我在学习“strtok”函数的时候发现了一个奇怪的问题。一开始写demo程序的时候漏掉了一个头文件,如下:
/* strtok example */
#include <stdio.h>
//#include <string.h> // the header file I've missed at first
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
编译器没有给出任何错误信息并成功编译了程序。但是在运行时会导致分段错误。当我添加缺少的头文件时,一切都很顺利。
我的问题是为什么编译器在第一次编译时没有诊断出任何错误。我在 Mac OS X 下使用 gcc4.2.1 编译它。