0

ファイル内の文字を置き換えるreplaceというLinuxコマンドを作成しようとしています。私はそれを次のように呼びたいと思っています:

$./replace I XY test.txt 

この例でtest.txtは、「THIS IS A TEST FILE」という単語が含まれています。

'I'文字をに置き換えるにはどうすればよいですか"XY"。以下のコードのようなバッファを使用しようとしましたが、バッファと argv の宣言が異なるため、エラーが発生します。さらに、'I'は 1 つの配列要素に格納されますが、 "XY"2 つ必要です。これに対する回避策はありますか?

例を考えてみましょうtext.txt:

[T][H][I][S][ ][I][S][ ][A][ ][T][E][S][T][ ][F][I][L][E]

この例では、3 番目のインデックス ( を含む'I') を次のように置き換える必要があります。"XY"

上記の問題がある私のコードは次のとおりです。

#define BUFFERSIZE 4096

/*replace i xy data.txt */
int main(int ac, char *av[])
{
    int in_fd, out_fd, n_chars, BufElement,j;
    char buf[BUFFERSIZE];
    in_fd=open(av[3], O_RDWR);

    /*Read characters from file to buffer*/
    while ( (nread = read(in_fd , buf, BUFFERSIZE)) > 0 )
    {
        for (BufElement=0;BufElement < nread;BufElement++)
        {
            for (j=0; j < strlen(av[1]); j++)
            {
                if (buf[BufElement] == av[1][j])
                    buf[BufElement] = av[2]; /*ERROR*/
            }/*for*/
        }/*for*/
    }/*while*/
}/*main*/
4

1 に答える 1