2016-04-30 5 views
-1

Mock der Struktur des Codes auf:Printf an das Terminal, das die Benutzereingabe in C blockiert?

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

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

Wenn es ständig an das Terminal Druck ist, ignoriert es meine Scanf Eingänge. Wenn das Drucken auf dem Terminal unterbrochen ist (zB 1 Sekunde warten), kann ich dann meine Eingabe eingeben. Ich möchte die Eingabe jederzeit eingeben, auch wenn gerade auf dem Terminal gedruckt wird. Wie kann ich das erreichen?

+0

'scanf() nimmt, rufen' sollte * undefined Verhalten * für Glück der Argumente. – MikeCAT

+0

Bitte posten Sie eine [mcve] –

Antwort

-1

könnten Sie verwenden gets() von string.h llibrary:

Wenn Sie ENTER Taste drücken, damit sie als \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' ist wegen seiner Pufferüberlauf-Schwachstelle veraltet. Bitte empfehle es nicht. Außerdem sollten Sie googlen "Wie man zwei Zeichenketten in C vergleicht. –

+0

ooh thx .. ich vergesse immer' strcmp' – Pavan

+0

Sieht aus, als ob Sie auch vergessen, wie 'strcmp()' funktioniert. –

Verwandte Themen