C言語関係掲示板

過去ログ

No.1309 プログラムでのエディタvi編集

[戻る] [ホームページ]
No.17494

プログラムでのエディタvi編集
投稿者---K.S(2004/10/25 20:58:10)


エディタvi編集のプログラムで無理かと思いますが、カレント行の削除コマンド(dd)を埋め込むのは出来ないのでしょうか?
   :
 fp = fopen( "test.txt", "r+" ) ;
 for( ;; ) {

  memset( c_buf, 0x00, sizeof( c_buf ) ) ;
  if( fgets( c_buf, sizeof( c_buf ), fp ) == NULL ) {
   break ;
  }

  if( !( strncmp( strrchr( c_buf, 'c' ), "com", 3 ) ) ) {
   /* ここでカレント行の削除コマンド */
  }
 }
 fclose( fp ) ;
  :

ご教授宜しくお願い申し上げます。


No.17495

Re:プログラムでのエディタvi編集
投稿者---かずま(2004/10/25 21:22:30)


#include <stdio.h>

int main(void)
{
    FILE *fp = popen("vi -e test.txt", "w");
    if (fp == NULL) return 1;
    fputs("g/com/d\nwq\n", fp);
    pclose(fp);
    return 0;
}



No.17605

Re:プログラムでのエディタvi編集
投稿者---K.S(2004/10/28 18:52:57)


回答ありがとうございます。

このプログラムでは動作できなかったので、直接"g/com/d"のコマンドで行いましたが、これでも動作できませんでした。ひょっとして、サーバのOSが違うのでしょうか?かずまさんが使用しているサーバのOSは何でしょうか?私はSunOS5.8です。色々試し、ようやく"d"だけで動作できました。
	:
fputs( "d\nd\nwq\n", fp ) ;
	:

本当にありがとうございました。

><pre>
#include <stdio.h>

int main(void)
{
FILE *fp = popen("vi -e test.txt", "w");
if (fp == NULL) return 1;
fputs("g/com/d\nwq\n", fp);
pclose(fp);
return 0;
}
</pre>




No.17606

Re:プログラムでのエディタvi編集
投稿者---K.S(2004/10/28 18:59:52)


>回答ありがとうございます。
>
>このプログラムでは動作できなかったので、直接"g/com/d"のコマンドで行いましたが、これでも動作できませんでした。ひょっとして、サーバのOSが違うのでしょうか?かずまさんが使用しているサーバのOSは何でしょうか?私はSunOS5.8です。色々試し、ようやく"d"だけで動作できました。


すみません。間違えました。TurboLinux8.0でした。
SunOSの方では"g/com/d"で動作できました。


>
	:
fputs( "d\nd\nwq\n", fp ) ;
	:

>本当にありがとうございました。
>
>><pre>
>#include <stdio.h>
>
>int main(void)
>{
> FILE *fp = popen("vi -e test.txt", "w");
> if (fp == NULL) return 1;
> fputs("g/com/d\nwq\n", fp);
> pclose(fp);
> return 0;
>}
></pre>
>