当程序在 C 中通过 nvim 执行时,不会调用 getchar()



我是一名新手C程序员,目前正在根据书籍设计简单的程序以获得更多知识。 现在,我正在学习"C编程语言"(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 coden");
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. 在 nvim 中运行程序时,我应该在 C 代码或 nvim 宏中更改什么以获得预期的行为?
  1. Neovim bang 角色引入了 EOF,如此处所述。

  2. 将宏中的 ! 更改为"te"。

在 gvim 中, :!gcc -Wall inputoutput.c -o inputoutput && ./inputoutput 为我工作并在下部屏幕运行程序。

不确定 nnoremap 在做什么,但必须引入一些控制字符。 我通常不会像那样使用编辑器重映射。 建议编写一个生成文件并运行

相关内容

  • 没有找到相关文章

最新更新