printf 缓冲区问题
突然发现printf的问题,看了这个很有意思,学习一下
转自:http://blog.csdn.net/shanshanpt/article/details/7385649
昨天在做Linux实验的时候,后面的同学发现一个很差异的现象!废话不说,先贴代码!
就是简单的fork小程序,简化之后的代码如下:
- #include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <sys/types.h>
- int main( int argc, char ** argv )
- {
- pid_t pid;
- int ret;
- printf("I am parent ... \n");
- ret = fork(); //!> fork the child
- switch( ret )
- {
- case -1:
- printf("Error...\n");
- exit( EXIT_FAILURE );
- case 0:
- printf("I am child!\n");
- break;
- default:
- break;
- }
- return 0;
- }
这段代码貌似还是很正常的,在我的机子上的输出结果是:
pt@ubuntu:~/桌面$ gcc -o test test.c
pt@ubuntu:~/桌面$ ./test
I am parent ...
I am child!
再看下面差不多的代码:
- #include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <sys/types.h>
- int main( int argc, char ** argv )
- {
- pid_t pid;
- int ret;
- printf("I am parent ... "); //!> 看出这个地方不一样了吗?
- ret = fork(); //!> fork the child
- switch( ret )
- {
- case -1:
- printf("Error...\n");
- exit( EXIT_FAILURE );
- case 0:
- printf("I am child!\n");
- break;
- default:
- break;
- }
- return 0;
- }
在我的机子上的输出是:
pt@ubuntu:~/桌面$ gcc -o test test.c
pt@ubuntu:~/桌面$ ./test
I am parent ... I am parent ... I am child!
输出了两个I am parent ... 是吧,按理说fork在复制的时候,parent顺序执行过的代码在chiled中应该是不会执行的呀!为什么呢?
当然这个结果肯定是OK的,这就要看printf的问题了,对于第一代码第一个printf结果在遇到'\n'就直接输出了,但是第二个不会,没有'\n',只会将结果保存在
printf的缓冲区,然后呀与后面的printf中的内容一起输出!!!所以fork在拷贝的时候,就将 parent的缓冲区一并拷贝过去,所以在第二个代码中看到的就是
那样的结果!呵呵!虽然是个小问题,但是还是值得去研究呀!还是回去再看看printf的实现机制吧,唉~~~
首先感谢zhy006指出错误,谢谢!
确实是自己的理解错了!这个地方涉及到的是行缓冲和全缓冲的问题!然后自己在网上搜了一下!给个差不多的链接!
学艺不精!惭愧惭愧!
再来细细咀嚼一下:对于行缓冲来说就是:if遇到回车字符那么不管缓冲区有没有满都直接输出,if没有\n那么就会一直加到缓冲区直到一行满那么就会自动输出,不管有没有\n都会输出!
那么对于上面的代码:printf("I am parent ...");没\n,那么虽然是行缓冲,但是一行没有满,它的缓冲区内就还有当前的字符,然后我们知道fork时缓冲区被拷贝到child中,那么就是现在有两份这样的字符串!所以在输出的时候会有两个输出!!!
对于行缓冲区,我下面有一个代码的测试,其实也就是第一个代码的修改:
- #include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <sys/types.h>
- int main( int argc, char ** argv )
- {
- pid_t pid;
- int ret;
- printf("..onsdnvasldvjnasldkvnasldkvnasonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdlkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdvkasdvkalksvdnaskdvbasdvasdvnasldvkjasdvlaskdvnasdvnsadvskdvnalsdvasdvsd. ");
- //!> 此处改成足够长的字符串,以至于会没有\n的时候会输出一部分,然后还剩下一点点字符,会被拷贝到child中!Yes!!!
- ret = fork(); //!> fork the child
- switch( ret )
- {
- case -1:
- printf("Error...\n");
- exit( EXIT_FAILURE );
- case 0:
- printf("I am child!\n");
- break;
- default:
- printf("Parent too..\n");
- break;
- }
- return 0;
- }
在我的机子上的输出:
pt@ubuntu:~/桌面$ gcc -o test test.c
pt@ubuntu:~/桌面$ ./test
..onsdnvasldvjnasldkvnasldkvnasonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdonsdnvasldvjnasldkvnasldkvnaslkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdlkjdvnaslkdvnsalkjdvsjnvajlskvlsjkbdvsalkdvnalskjdvbsaldkvbansdvlkjbsndvlkjasnbdvlkjasnbvaskdvbanskdvbjnasdlvkbasvdasvdkaksdvkasdvkalksvdnaskdvbasdvasdvnasldvkjasdvlaskdvnasdvnsadvskdvnalsdvasdvsd. Parent too..vsd. I am child!
看见没有!只有vsd.I am child! 也就是说,前面所有的字符个数满足一行的整数倍!所以没有\n也会输出,不会保存在缓冲区!所以最后只剩下vsd.几个字符!所以会显示两次哟!!!
printf 缓冲区问题的更多相关文章
- 【VS开发】【C/C++开发】printf缓冲区刷新
printf之缓冲区小结: 今天调试程序,发现了一个有趣的现象,printf函数没有按照预期的结果输出重复的字符串,单步调试显示代码的确走到了打印屏幕的分支,没有显示不由得想到了是不是缓冲区去刷新的问 ...
- printf函数与缓冲区
printf函数与缓冲区 printf函数是一个行缓冲函数,先将内容写到缓冲区,满足一定条件后,才会将内容写入对应的文件或流中. 基本条件如下: .缓冲区填满 .写入的字符中有‘\n’ '\r' .调 ...
- C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲
//文件结构体FILE的理解以及缓冲区再讲 #include<stdio.h> #include<stdlib.h> //要点:文件结构 //struct _iobuf { / ...
- UTF8 UTF16 之间的互相转换
首先需要知道 Unicode 编码范围 [U+00, U+10FFFF], 其中 [U+00, U+FFFF] 称为基础平面(BMP), 这其中的字符最为常用. 当然, 这 65536 个字符是远远不 ...
- 控制台API函数----HANDLE、SetConsoleCursorPosition、SetConsoleTextAttribute
控制台API函数 调用相关文本界面控制的API函数,这些函数可分为三类. 一.用于控制台窗口控制的函数(包括窗口的缓冲区大小.窗口前景字符和背景颜色.窗口标题.大小和位置等): 二.用于控制台输入输出 ...
- C 碎片九 预处理&位运算&文件操作
一.预处理 预处理语句:#开头的语句,在预处理阶段处理预处理语句.包括宏定义.文件包含处理.条件编译 1, 宏定义 1. 不带参数宏定义:#define 标识符 字符串 #define PI 3.1 ...
- Linux fork函数具体图解-同一时候分析一道腾讯笔试题
原创blog.转载请注明出处 头文件: #include<unistd.h> #include<sys/types.h> 函数原型: pid_t fork( void); (p ...
- beisen
#include <stdio.h> #include <pthread.h> #include <windows.h> #define N 100 #define ...
- Pwn学习随笔
Pwn题做题流程 使用checksec检查ELF文件保护开启的状态 IDApro逆向分析程序漏洞(逻辑复杂的可以使用动态调试) 编写python的exp脚本进行攻击 (若攻击不成功)进行GDB动态调试 ...
随机推荐
- 在多台服务器上简单实现Redis的数据主从复制
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面我演示下怎样在多台服务器上 ...
- 别再说“我已经努力了”,你的“努力”一文不值!
有次,让一个研究生男收集一份资料,快下班了问结果,竟然毛也没有.见我要怒,他慷慨激昂地说:"我已经很努力找了,但真的查不到." 作为主管,"我已经努力"这话我不 ...
- 【转】linux(Ubuntu)配置svn仓库,搭建svn服务器
原文网址:http://blog.1v2d.com/322.html 在家里搞了好久,终于搞出来,并且在线上已经成功搭建成功,在这感谢一个博主的文章,本篇文章也主要是转载他的内容,写的非常好,而且非常 ...
- LINUX系统中动态链接库的创建与使用{补充}
大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部 ...
- Linux学习笔记23——取消线程
一 相关函数 1 发送终止信号 #include <pthread.h> int pthread_cancel(pthread_t thread); 2 设置取消状态 #include & ...
- java 哈希码
加入新的元素到数组中 /** * Append the given object to the given array, returning a new array * consisting of t ...
- zendstudio xdebug 配置
1. 下载XDebug: http://www.xdebug.org/download.php 通过phpinfo()查看你的php版本,现在相对应的dll文件
- 青蛙的约会 - poj 1061(扩展欧几里得)
分析:这个东西在数论里面应该叫做不定方程式,可以搜一下,有很精彩的证明,先求出来方程式的一组特解,然后用这组特解来求通解,但是求出来特解之后怎么求这些解里面的最小非负x值?我们知道 x = x0 + ...
- 使用Spring-data-redis操作Redis的Sentinel
介绍 Spring-Data-Redis项目(简称SDR) 是对Redis的Key-Value数据存储操作提供了更高层次的抽象,提供了一个对几种主要的redis的Java客户端(例 如:jedis,j ...
- 使用ViewPager实现三个fragment切换
新建一个android项目 先展示效果吧 首先看myfragmentPagerAdater这个类的代码 package com.example.viewpager; import java.util. ...