有时不要以为printf一定能打印出数据来。有时,你不在程序的每个地方printf的地方都不加上"/n”,程序根本就不打印任何数据出来,信不?!我就倒霉的遇到个一次。遇到这些很头疼的,还以为是程序哪儿出错咯。原来这是因为,它其实有缓冲的功能,只有在“/n”,它才将缓冲里的数据,打印出来。切记,切记~~
比如在父子程序中,按理来说,子程序里面的printf绝对不会打印出父程序里面的printf数据。但你试试,在父程序里面调用printf,但不加“/n”,然后调用fork(),产生子程序。在子程序里面,你再调用printf,这回你再加上“/n”。结果,你就会发现子程序输出了父程序里面printf的数据。
父程序:
printf("1”);
if(fork()>0)
{//子程序
printf(“2/n”);
}
结果就是:
父程序:1
子程序:12
对比
父程序:
printf("1/n”);
if(fork()>0)
{//子程序
printf(“2/n”);
}
结果就是:
父程序:1
子程序:1
奇怪吧,话得说回来,是因为printf有缓冲功能,当你调用printf(不加“/n”),他会把你的数据缓冲起来,当你再调用printf(加上“/n”),他就会把里面缓冲的所有数据输出。
所以,对于一个程序员来说,这绝对算的上是必须知道的常识。