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

 

转载于:https://www.cnblogs.com/xxg1992/p/7686383.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值