2
我有关于执行下列程序的问题。程序的执行顺序
#include<stdio.h>
int main(void)
{
char *p="hey friends",*p1;
p1=p;
while(*p!='\0')
{
p++;
printf("\n%p",p);
}
printf("%s %s",p,p1);
sleep(100);
}
当我跑了下面这是给输出如下:
0x8048521
0x8048522
0x8048523
0x8048524
0x8048525
0x8048526
0x8048527
0x8048528
0x8048529
0x804852a
,然后加入100秒之后它打印“0x804852b哎朋友”。虽然声明:printf(“%s%s”,p,p1);在睡眠声明之前,那么为什么它在睡觉前不打印,而且它正在打印另一个地址意味着它再次进入循环。有人请向我解释上述程序的工作。它是否与printf函数的缓冲区有关?
正常情况下,在找到\ n时将输出刷新到终端。在最后一次迭代中,没有\ n,所以你必须等到程序退出。 – Juancho 2011-03-04 17:47:55