繁体   English   中英

不打印最后一个字符:仅在下一次输入后打印

[英]Don't print the last character: print only after the next input

我有一个问题,当我尝试打印输入时,程序不会打印最后一个字符串(在本例中var_quantita )。

但是,如果我添加一个\n ,或者如果我从stdin发送另一个命令,它就可以工作。

所以我认为问题与最后一个字符串有关,但我不确定。

我的代码:

uint32_t var_quantita;
uint8_t var_tipo[BUF_SIZE];
//...
memset(com_par, 0, BUF_SIZE);
memset(comando, 0, BUF_SIZE);
memset(arg2, 0, BUF_SIZE);
memset(arg3, 0, BUF_SIZE);
memset(arg4, 0, BUF_SIZE);

//prendo in ingresso il comando e i parametri
fgets(com_par, BUF_SIZE, stdin);

sscanf(com_par, "%s %s %s %s", comando, arg2, arg3, arg4);
printf("Argomenti inviati:%s %s %s %s \n", comando, arg2, arg3, arg4);

//......

if(strcmp(comando, "add\0") == 0){

    strcpy(var_tipo, arg2);
    var_quantita = atoi(arg3);
    printf("Tipo:%s\nQuantita:%d", var_tipo, var_quantita); 


}//fine if(add)

您系统的缓冲设置为行缓冲,当遇到换行符时,字符作为块从缓冲区传输。 使用\n是完全有效的,但它也有打印换行符的副作用,还有其他选项,即:

  • printf之后使用fflush(stdout)将刷新缓冲区,你不需要\n

  • 您可以将缓冲模式更改为无缓冲,每个 output 都会尽快写入。 同样,不需要\n

     setvbuf(stdout, NULL, _IONBF, 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM