0

我有一个程序可以检测新连接的 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);

谢谢..

4

1 回答 1

0

您可以像以前一样将每一行一一复制到其中buff,然后与要从现有文件中删除的行匹配。如果不匹配,则将其复制到某个临时文件中。一直执行到 eof()。您只是不必复制要从现有文件中删除的行。

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

于 2012-10-25T09:50:43.113 回答