2016-07-30 19 views
1

Emacsバッファの領域を取り込んでその領域に置き換えるCプログラムを書いてみたい。EmacsバッファをCに渡す

#include <stdio.h> 

int main(int argc, char *argv[]) { 
    printf("The argument given was: %s\n",argv[1]); 
} 

私は

g++ -Wall -o c_example c_example.c 

でこれをコンパイルし、私のパスにバイナリを置く:

はここに私のCプログラムです。 c_example |私は、端末に

c_example Hello 

を行うと、私はEmacsのバッファに「こんにちは」を選択し、「銅M-でシェルコマンドの領域を使用している場合、私は

The argument given was: Hello 

を取得しますが、代わりに

The argument given was: (null) 

に置き換えられます。どうしてこれなの?

+2

ないEmacsの利用者を、私はパイプ文字を使用すると、標準入力としてバッファ配管されることを意味していることと思います。 – a3f

答えて

4

filterコマンドに渡されたemacsバッファの内容は、コマンドラインからは取得されず、標準入力から取得されます。 fgets()、またはその他の入力機能<stdio.h>から読み取ることになっています。

は、このバージョン試してみてください:

#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; 
} 
関連する問題