C 在一行中比较文本文件中的字符串,并在找到该行时删除该行
我有一个程序,可以检测新连接的ip并将其记录在文本文件中。。e、 g Myconnectedip.txtC 在一行中比较文本文件中的字符串,并在找到该行时删除该行,c,linux,C,Linux,我有一个程序,可以检测新连接的ip并将其记录在文本文件中。。e、 g 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 Conn
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);
谢谢。您可以像以前那样将每一行逐个复制到
buff
中,然后与要从现有文件中删除的行进行匹配。如果不匹配,则将其复制到某个临时文件。直到eof()为止。
您不必复制要从现有文件中删除的行
之后,只需将临时文件重命名为与之前相同的名称。您应该了解为什么要删除一行,为什么不通过添加新行来更新事件->这将更快、更简单、更实用,您还可以归档旧文件并控制任何文件的大小->您还可以更深入地了解系统的行为(例如,其他信息,如连接何时关闭等)