gpt4 book ai didi

c - 忽略我不想复制到文本文件中的字符串

转载 作者:行者123 更新时间:2023-11-30 17:56:51 24 4
gpt4 key购买 nike

假设我有一个 IP 列表,我不想将其复制到文本文件中。这就是我所做的..例如,我不想复制 192.168.5.20...

在我的 temp.txt 文件中,我有 IP:

192.168.5.20
192.168.5.10
192.168.5.30
192.168.5.50
192.168.5.12

-

char *data = "192.168.5.20";

char buff[100];
FILE *in, *out;

in = fopen("/tmp/temp.txt", "r");

while(fgets(buff,sizeof(buff),in) !=NULL){


if(!strstr(buff, data)){

printf("copying to ip.txt\n");
out = fopen("/tmp/ip.txt", "a");
fprintf(out,"%s",buff);
fclose(out);
}


}
if(feof(in)){

printf("Closing file descriptor and renaming ip.txt to temp.txt\n");
fclose(in);
rename("/tmp/ip.txt", "/tmp/temp.txt");
}

它可以留下192.168.5.20 ip..但我的问题是temp.txt只有一个ip..例如192.168.5.20

现在我想忽略它,所以当我打开 temp.txt 文件时它应该是空白的。但当我打开 temp.txt 文件时,ip 192.168.5.20 仍然存在?..为什么要这样做?.

谢谢..

最佳答案

仅当 /tmp/temp.txt 中至少有一行不包含以下模式时,才会创建文件 /tmp/ip.txt被忽略。

if(!strstr(buff, data)){
printf("copying to ip.txt\n");
out = fopen("/tmp/ip.txt", "a");
fprintf(out,"%s",buff);
fclose(out);
}

因此,如果 /tmp/temp.txt 仅包含一行,并且包含要忽略的模式,则不会创建 /tmp/ip.txt,并且rename 失败,将 errno 设置为 ENOENT

检查一下

#include <errno.h>
#include <string.h>

int fail = rename("/home/dafis/Doesntexist", "/home/dafis/doesexist");
if (fail) {
int en = errno;
if (en)
perror(strerror(en));
}

关于c - 忽略我不想复制到文本文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13160238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com