我正在嘗試編寫一個名爲replace的linux命令,它將替換文件中的字符。我希望把它像這樣:通過命令行替換字符
$./replace I XY test.txt
在這個例子中,test.txt
包含單詞「這是一個測試文件」
我怎麼能替換字符'I'
與"XY"
。我試圖使用一個緩衝區,例如下面給出的代碼,但由於緩衝區和argv聲明不同,它會產生一個錯誤。此外,'I'
存儲在一個數組元素中,而"XY"
需要兩個。有沒有解決這個問題的方法?
考慮text.txt
例如:
在這個例子中,第三個指標(其中包含'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*/
爲什麼不直接在這裏發佈代碼? – slartibartfast 2012-04-20 06:23:00
可能重複的[如何替換c中的子字符串](http://stackoverflow.com/questions/3659694/how-to-replace-substring-in-c) – 2012-04-20 06:27:28