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