scanf使用过程中的技巧与坑位

scanf()默认:

  遇到空白符就当是输入(空格,制表符,回车均为空白符);

我的预期:

  空白,制表符当成内容,不作为输入指令,仅当回车时才完成输入。

遇到的坑位:

  连续输入时,最后一条始终要到下次才被读入。

解决:

  %[^n] :接收除回车之外的所以字符;

  fflush(stdin): 清空输入

  getchar(): 将最后一个回车符吃掉,以免影响下一条输入,或者scanf("%c", &tchar)。

sprintf(txtbuff,"[%s :>>>>>>>>>>>>>>>>>>>
", name_head);
        while(1) {
            memset(wrbuf,0,sizeof(wrbuf));
            scanf("%[^
]",wrbuf);
            scanf("%c",&tmpchar);
            fflush(stdin);
            if( strcmp(wrbuf,"send")==0 ) {
                break;
            }
            strcat(wrbuf,"
");
            strcat(txtbuff,wrbuf);
        }
        char endchar[50]={0};
        sprintf(endchar,"<<<<<<<<<<<<<<<<<<<%s]
",name_head);
        strcat(txtbuff,endchar);
原文地址:https://www.cnblogs.com/xxg1992/p/7686383.html