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> > |