Printf到终端阻塞C中的用户输入?

时间:2016-04-30 14:53:34

标签: 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秒钟),我可以输入输入。我想在任何时候输入输入,即使它当前正在打印到终端。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:-1)

您可以使用 string.h中的 gets() 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;
    }