2016-04-30 74 views
-1

模擬了代碼的結構的:printf到終端阻止用戶在C中的輸入?

// Thread void printToScreen(){ 
    while(1){ 
     printf("Hello"); 
     while(state == 1){ 
      //Wait 
     } 
    } 
} 

main(){ 
    while(1){ 
     scanf("%s",str); 
     if(String == END){ 
      // End printToScreen(); 
      state = 1; 
     } 
    } 
} 

當不斷打印到終端,它忽略我的scanf輸入。如果終端打印中斷(例如等待1秒鐘),則可以輸入我的輸入。我想在任何時候輸入輸入,即使當前輸入正在打印到終端。我怎樣才能做到這一點?

+0

'的scanf();'應該調用*未定義的行爲*爲爭論的運氣​​。 – MikeCAT

+0

請發佈[mcve] –

回答

-1

你可以使用得到string.h中() llibrary:

如果按ENTER鍵它把它作爲\0

#include<stdio.h> 
    #include<stdlib.h> 
    #include<string.h> 


    void printToScreen(){ 
     char str[100]; 
     int i; 
     while(1){ 

      for(int i=0;i<100;i++){ 
       scanf("%c",&str[i]); 
       if(str[i]=='\n') break; 
      } 
      if(!strcmp("END\n",str)) return ; 
     printf("Hello\n"); 
     } 
    } 

    int main(){ 
     printToScreen(); 
     return 0; 
    } 
+0

'gets'由於其緩衝區溢出漏洞而不推薦使用。請不要推薦它。另外,你應該google'如何比較C中的兩個字符串' –

+0

ooh thx ..我總是忘記'strcmp' – Pavan

+0

看起來你也忘記了'strcmp()'的工作方式 –