看板 C_and_CPP 關於我們 聯絡資訊
最近在學 THREAD的用法 由於作業的要求 我就試著照上課裡的範例修改 寫一個列印小於輸入的整數的所有質數的程式 void *threadProcess (void *param){ for(int i=2 ; i<=atoi((char*)param) ;i++){ int temp = i; double task = rootSquare(temp); ( 開根號 ) int set = 0; for(int k=2; k<=task+0.1 ; k++){ if(i%k ==0) set = 1; } if(set == 0) printf("%d",i); ←───────****** } } int main (int argc , char* argv[]){ pthread_t tid; pthread_attr_t attr; if(argc != 2 ){ fprintf(stderr , "usage : a.out < interger value\n"); return -1; } if( atoi(argv[1]) < 0){ fprintf(stderr, "%d must be >= 0 \n",atoi(argv[1])); return -1; } pthread_attr_init(&attr); pthread_create(&tid,&attr,threadProcess,argv[1]); pthread_join(tid,NULL); } 問題出在箭頭指的地方 像我這樣是印不出任何東西 但是如果printf裡多給一個換行\n 就印的出來 想請問一下究竟是為什麼如果不給 \n 在thread裡就印不出任何東西 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.25.35 ※ 編輯: honamida 來自: 123.195.25.35 (10/20 21:04)
scwg:其實是有印出來只是被 buffer 住了, \n 會清 buffer 顯示出來 10/20 23:50
james732:用 fflush(stdout); 也可以強制把 buffer 內容送出去 10/20 23:52