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动态调试 ...
随机推荐
- 【转】Android:Bluetooth 的打开和关闭--不错
原文网址:http://www.ifeegoo.com/android-turn-on-and-turn-off-bluetooth.html 摘要:Android 中打开和关闭 Bluetooth ...
- 谷歌浏览器怎么调试js
首先我们打开开发者工具,你可以直接在页面上点击右键,然后选择审查元素或者在Chrome的工具中找到或者你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shift+J直接打开控制台) ...
- unicode随笔小计
科普字符集: ascii:一个字节,占8位,(0000 0000 - 1111 1111) 如果只是英语那就没什么问题. 后来,不同的语言有了编码诞生.为了统一,出现一个大集合.便有了. unicod ...
- vijosP1471 教主的游乐场
vijosP1471 教主的游乐场 链接:https://vijos.org/p/1471 [思路] 递推. 首先找到最左边的可以一步跳到后方的L, 那么L之后的点有两种情况:要么a足以跳到后方步数为 ...
- MobaSSH SSH server for Windows - Download Home Edition
MobaSSH SSH server for Windows - Download Home Edition undefined
- 12个强大的Web服务测试工具
在过去的几年中,web服务或API的普及和使用有所增加. web服务或API是程序或软件组件的集合,可以帮助应用程序进行交互或通过形成其他应用程序或服务器之间的连接执行一些进程/事务处理.基本上有两种 ...
- Android实现弹出输入法时,顶部固定,中间部分上移的效果
前言 最近做项目时碰到一个问题,在意见反馈里面,提交按钮写到顶部,当用户输入反馈意见或者邮箱手机号时,弹出的输入法会上移整个页面,导致提交按钮显示不了. 很明显,这样的界面是非常不友好的,找了一些资料 ...
- linux驱动开发之GCC问题
最近正在学习驱动开发,进展到字符设备驱动开发阶段. 先不多说,首先把刚看的一篇学习驱动步骤的帖子记录如下: 1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. ...
- 创建oracle 密码文件
orapwd file='$ORACLE_HOME/dbs/oratest' password=oracle entries=5 force=y; 说明:●FILE参数指定口令文件存放的全路径及文件名 ...
- Struts2配置文件讲解
解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为” http://struts.apache.org/d ...