比较行中文本文件中的字符串,并在找到时删除该行

时间:2012-10-25 09:35:42

标签: c linux

我有一个程序可以检测新连接的ip并将它们记录在一个文本文件中......例如

Myconnectedip.txt

New Connection from IP: 192.168.5.20
New Connection from IP: 192.168.5.30

现在我的程序检测到ip 192.168.5.30已断开连接。它将更新文本文件并删除该行并更新我的文本文件。

New Connection from IP: 192.168.5.30

现在,当我打开文本文件时,我将看到的唯一一行是

New Connection from IP: 192.168.5.20

如何删除文本文件中的行字符串?

这是我怎么做的..

char buff[20];
File *fp
fp = fopen("/tmp/Myconnectedip.txt", w+);

while ( fgets( buff, sizeof(buff), fp ) != NULL ) {
        if ( strstr( buff, "Connection Closed from IP: 192.168.5.20" ) != NULL ) {

            //When found how can i remove that line and update my textfile?.

        } else {
            // nothing to do here..
}
}
close(fp);

谢谢..

1 个答案:

答案 0 :(得分:0)

您可以像往常一样将每一行逐个复制到buff,然后与要从现有文件中删除的行匹配。如果不匹配,则将其复制到一些临时文件。直到eof()。 您只需从现有文件中复制要删除的行即可。

之后只需重命名与之前名称相同的临时文件。