gpt4 book ai didi

c - 在 C 中通过 nvim 执行程序时不调用 getchar()

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:51 26 4
gpt4 key购买 nike

我是一名 C 程序员新手,目前正在根据书籍设计简单的程序以获取更多知识。现在,我正在学习“The C Programming Language”(Brian Kernighan、Dennis Ritchie),并且正在点击讨论输入/输出编程的部分。

这是我尝试运行的代码(几乎是从 K&R 复制的):

#include <stdlib.h>
#include <stdio.h>

int main (int argc, char** argv)
{
int c;

printf("Input character:\n");

while ((c = getchar()) != EOF){
putchar(c);
}

printf("End of code\n");

return 0;

}

我使用 nvim 作为我的 IDE。我将我的 nvim 快捷方式设置如下用于编译:

nnoremap <leader>cc :!gcc -Wall % -o %:r && ./%:r<CR>

现在回到代码。当我使用上面显示的快捷方式编译这个时,它工作得很好。代码编译。但是,我的程序结束时没有询问我任何输入(正如对 getchar() 的调用应该做的那样):

:!gcc -Wall inputoutput.c -o inputoutput && ./inputoutput

Input character:
End of code

直接在 nvim 中输入命令,不进行任何替换:

:gcc -Wall inputoutput.c -o inputoutput && ./inputoutput

给我和以前一样的输出。

但是,当我在外部 nvim 执行编译程序时,我得到了预期的行为:

nxr: ~/scratch/c - ./inputouput
Input character:
a
a
** <CTRL-d> **
End of code

nxr: ~/scratch/c -

我的问题是:

  1. 为什么当我尝试运行代码时,nvim 内部和外部的行为不同?
  2. 我应该在我的 C 代码或我的 nvim 宏中更改什么,以便在 nvim 中运行程序时获得预期的行为?

最佳答案

  1. Neovim bang 字符引入了一个 EOF,如解释的那样 here .

  2. 改变!在宏中使用“te”。

关于c - 在 C 中通过 nvim 执行程序时不调用 getchar(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44895756/

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