Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在一行中比较文本文件中的字符串,并在找到该行时删除该行_C_Linux - Fatal编程技术网

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

C 在一行中比较文本文件中的字符串,并在找到该行时删除该行,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

我有一个程序,可以检测新连接的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 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()为止。 您不必复制要从现有文件中删除的行


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

您应该了解为什么要删除一行,为什么不通过添加新行来更新事件->这将更快、更简单、更实用,您还可以归档旧文件并控制任何文件的大小->您还可以更深入地了解系统的行为(例如,其他信息,如连接何时关闭等)