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动态调试 ...
随机推荐
- BZOJ1465: 糖果传递
1465: 糖果传递 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 277 Solved: 105[Submit][Status] Descriptio ...
- android逐行读取文件内容以及保存为文件
用于长时间使用的apk,并且有规律性的数据 1,逐行读取文件内容 //首先定义一个数据类型,用于保存读取文件的内容 class WeightRecord { String timestamp; flo ...
- BZOJ1015 [JSOI2008]星球大战starwar(并查集)
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 3895 Solved: 1750[Submit ...
- 一个awk命令的demo
/prefix_* | awk -F'\x3' '{print $2}' | awk -F'\x2' '{for(i=0; i<NF; i++)print $i}'> ~/20140819 ...
- codeforces 400D Dima and Bacteria 并查集+floyd
题目链接:http://codeforces.com/problemset/problem/400/D 题目大意: 给定n个集合,m步操作,k个种类的细菌, 第二行给出k个数表示连续的xi个数属于i集 ...
- thinkphp xml编码函数
/** * XML编码 * @param mixed $data 数据 * @param string $root 根节点名 * @param string $item 数字索引的子节点名 * @pa ...
- C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏
1. 概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...
- 三大框架常遇的错误:hibernate : object references an unsaved transient instance
hibernate : object references an unsaved transient instance 该错误是操作顺序的问题,比如: save或update顺序问题---比方学生表和 ...
- DIV+CSS区块框浮动设计
在页面布局的时候,能够用绝对定位来实现,可是因为调整某个区块框时其它区块的位置不会对应的改变,所以这并非布局的首选方式.可是使用浮动的区块框能够向左或向右移动,直到它的外边缘碰到包括它区块的边框或还有 ...
- mysql默认用户名和密码
默认用户名:root 密码:gree..