gpt4 book ai didi

c - 在 C 中制作一个看起来不错的 REPL

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:59 25 4
gpt4 key购买 nike

我正在编写带有类似 Shell 界面的小程序。我的 ui 是:

void cli_ui(void){
bool loop = true ;
char response[CHARSIZE];
while (loop) {
puts("cofre>");
fgets(response, CHARSIZE, stdin);
....
}

}

我的问题是在提示后读取输入:

cofre>
# input is expected here

我想要的是:

cofre> #input is expected here

你会怎么做?

最佳答案

问题是 puts() 写入字符串并用换行符替换尾随的空值,这导致换行。

答案是使用 fputs()。有点令人惊讶的是,fputs() 的作用与 puts() 不同,而是输出没有尾随换行符的字符串。所以。

fputs("cofre>", stdout);

有些人会建议您使用 printf(),但这是一个错误。当您使用 fgets() 时,您应该将它与 fputs() 配对。好处是您明确使用标准输入和输出,因此您将能够从脚本驱动您的 REPL。

请注意,在某些实现中,fgets() 和 fputs() 可能会被缓冲,这不是您想要的。在某些情况下,您可能需要改用低级 I/O,例如 cputs/cgets()。这些是非标准的。

关于c - 在 C 中制作一个看起来不错的 REPL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22400243/

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