我有一个程序可以检测新连接的 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);
谢谢你..
最佳答案
您可以像以前一样将每一行逐一复制到 buff
中,然后与要从现有文件中删除的行进行匹配。如果不匹配,则将其复制到某个临时文件。一直执行到 eof()。
您不必复制要从现有文件中删除的行。
之后,只需将临时文件重命名为与之前相同的名称即可。
关于比较文本文件中的字符串的一行,并在找到时删除该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065664/