将Emacs缓冲区传递给C
我想写一个C程序,它接收Emacs缓冲区的一个区域,并用它的输出替换该区域 这是我的C程序:将Emacs缓冲区传递给C,c,emacs,C,Emacs,我想写一个C程序,它接收Emacs缓冲区的一个区域,并用它的输出替换该区域 这是我的C程序: #include <stdio.h> int main(int argc, char *argv[]) { printf("The argument given was: %s\n",argv[1]); } 然后把二进制文件放到我的路径中。当我这样做的时候 c_example Hello 在候机楼,我得到 The argument given was: Hello 但如果我在Em
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("The argument given was: %s\n",argv[1]);
}
然后把二进制文件放到我的路径中。当我这样做的时候
c_example Hello
在候机楼,我得到
The argument given was: Hello
但如果我在Emacs缓冲区中选择Hello,并在带有C-u M-| C|示例的区域上使用shell命令,它将被替换为
The argument given was: (null)
相反。这是为什么?传递给filter命令的emacs缓冲区的内容不是从命令行检索的,而是从标准输入检索的。您应该使用FGET或来自的任何其他输入函数来读取它 请尝试以下版本:
#include <stdio.h>
int main(void) {
char line[80];
if (fgets(line, sizeof line, stdin)) {
printf("The first line of the buffer is: %s", line);
}
return 0;
}
传递给filter命令的emacs缓冲区的内容不是从命令行检索的,而是从标准输入检索的。您应该使用FGET或来自的任何其他输入函数来读取它 请尝试以下版本:
#include <stdio.h>
int main(void) {
char line[80];
if (fgets(line, sizeof line, stdin)) {
printf("The first line of the buffer is: %s", line);
}
return 0;
}
不是Emacs用户,但我猜管道字符表示您正在将缓冲区管道化为标准输入。不是Emacs用户,但我猜管道字符表示您正在将缓冲区管道化为标准输入。