我正在尝试编写一个名为 replace 的 linux 命令,它将替换文件中的字符。我希望这样称呼它:
$./replace I XY test.txt
在此示例中,test.txt
包含单词“这是一个测试文件”
如何将字符替换'I'
为"XY"
. 我曾尝试使用如下代码所示的缓冲区,但由于缓冲区和 argv 的声明方式不同,因此会产生错误。此外,'I'
存储在一个数组元素中,而"XY"
需要两个。是否存在解决方法?
考虑这个text.txt
例子:
[T][H][I][S][ ][I][S][ ][A][ ][T][E][S][T][ ][F][I][L][E]
在此示例中,第三个索引(包含'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*/