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

scanf()默认:

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

 

我的预期:

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

 

遇到的坑位:

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

 

解决:

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

  fflush(stdin): 清空输入

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

sprintf(txtbuff,"[%s :>>>>>>>>>>>>>>>>>>>\n", name_head);
        while(1) {
            memset(wrbuf,0,sizeof(wrbuf));
            scanf("%[^\n]",wrbuf);
            scanf("%c",&tmpchar);
            fflush(stdin);
            if( strcmp(wrbuf,"send")==0 ) {
                break;
            }
            strcat(wrbuf,"\n");
            strcat(txtbuff,wrbuf);
        }
        char endchar[50]={0};
        sprintf(endchar,"<<<<<<<<<<<<<<<<<<<%s]\n",name_head);
        strcat(txtbuff,endchar);

 

posted @ 2017-10-18 14:07  云鹤比天  阅读(220)  评论(0编辑  收藏  举报