gpt4 book ai didi

C 控制台输出不连续,等待程序完成

转载 作者:可可西里 更新时间:2023-11-01 10:00:12 24 4
gpt4 key购买 nike

我使用“GCC C 编译器”作为我的编译器,我有一个程序使用“fgets”将输入作为标准输入,然后我使用多个 printf 来打印某些输入的结果。

但是,我的问题是我希望输出发生在 fgets 之间,它们确实驻留在我的代码中,但是目前没有任何打印,直到我从 main 返回并且程序结束。

输入代码:

int get_inputs(char** operands, char* delim) {
if (fgets(input,sizeof(input),stdin) == NULL) return 0; /* End of file */

/* Parse with StringParse, returns number of substrings */
return StringParse(input, operands, delim, 2, "+-*/^ ");
}

输出代码:(在 While(1) 循环中)

count = get_inputs(operands, delim);

switch(count) {
case 0:
printf("User Terminated\n");
return 0; /* User Terminated */

case 1: /* Single Value Input */
accumulator = atof(operands[0]);
printf("%g\n", accumulator);
break;

case 2:
if(strlen(operands[0]) == 0) { /* Operation First use Accumulator as input */
accumulator = doMath(accumulator, atof(operands[1]), delim[0]);
printf("%g\n", accumulator);
}
else { /* Two new values, replace Accumulator */
accumulator = doMath(atof(operands[0]), atof(operands[1]), delim[0]);
printf("%g\n", accumulator);
}
break;

default:
printf("Invalid Input\n"); /* Invalid Input or Error */
break;
}

其他所有函数都只是在进行数学运算或字符串解析。

提前致谢!

最佳答案

这是因为标准输出被缓冲以提高性能。数据仅以较大的 block 推送到输出管道。要强制在某个时间点发生这种情况,请添加

fflush(stdout);

在写入标准输出的代码中。

关于C 控制台输出不连续,等待程序完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com