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动态调试 ...
随机推荐
- 15个值得开发人员关注的jQuery开发技巧和心得
在这篇文章中,我们将介绍15个让你的jQuery更加有效的技巧,大部分关于性能提升的,希望大家能够喜欢! 1. 尽量使用最新版本的jQuery类库 jQuery项目中使用了大量的创新.最好的方法来提高 ...
- json串的使用
一:在C#中使用json字符串 从这里下载:http://www.newtonsoft.com/products/json/ 安装: 1.解压下载文件,得到Newtonsoft.Json.dll 2. ...
- Cogs 1070. [焦作一中2012] 玻璃球游戏 带权并查集,逆序处理
题目: http://cojs.tk/cogs/problem/problem.php?pid=1070 1070. [焦作一中2012] 玻璃球游戏 ★ 输入文件:marbles.in 输出 ...
- hdu 4280 最大流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4280 #pragma comment(linker, "/STACK:1024000000, ...
- Drawing Lines - SGU 135(简单递推)
求N条直线最多能把一个平面分成几部分. 代码如下: ========================================================================== ...
- 2014年河南省第七届ACM大赛总结
虽然大赛已经结束了两天,不过比赛的场景还是不断地在眼前回放,一遍遍,这次的比赛给了我很深刻的感悟还有教训. 刚开始比赛选择了贩卖武器那道题,也是全场到最后唯一没有被人做出来的一道题,策略的严重错误,大 ...
- Selenium+Java+TestNG环境配置
1. JDK 2.eclipse+TestNG >TestNG安装. Name:testng Location:http://beust.com/eclipse.如图: 3.seleniu ...
- 自定义使用S缓存方法
<?php $info=S("name","lizhaoyao"); $name=S("name"); var_dump($name) ...
- hdu 2824 The Euler function(欧拉函数)
如果打表的话会超内存,我想到了一种方法解决这个问题.题目给出的数据时3000000,我将三百万分成300个数据,将整万的数据存储下来,计算的时候,先计算x和y之间整万的数据,然后再计算零散数据. 想法 ...
- jquery_EasyUI的学习
1 Accordion(可折叠标签) 1.1 实例 1.1.1 代码 <html> <head> <meta http-equiv="Content-Type& ...