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);