gpt4 book ai didi

c - 使用 fread 时出现段错误,无法从文件中读取数据

转载 作者:行者123 更新时间:2023-11-30 18:05:57 24 4
gpt4 key购买 nike

这里想要从文件 Enter_data 复制数据并将其传递给函数 insert(key,keys) 但我遇到段错误,而且我无法从文件中读取数据

这里classifier是一个结构体,packet_filter有ip和udp的结构体,因为我想输入src和dst ip地址以及src和dst端口号

    struct classifier
{
int key_node;
struct packet_filter pktFltr;
struct classifier *next;
}__attribute__((packed));




void addrule(struct classifier keys)
{
int key;
FILE *fp;
fp = fopen("enter_data","r");
fread(&keys, sizeof (struct classifier), 3, fp);
insert(key,keys);
fclose(fp);
}
<小时/>
                    file: enter_data

key = 822;
keys.key_node = 822;
inet_aton("172.28.6.137", &(keys.pktFltr.ip.ip_src));
inet_aton("172.28.6.10",&(keys.pktFltr.ip.ip_dst));
keys.pktFltr.protocol.proto.uh_sport = ntohs(1032);
keys.pktFltr.protocol.proto.uh_dport = ntohs(5000);
keys.next = NULL;


key = 522 ;
keys.key_node = 522;
inet_aton("172.28.6.87", &(keys.pktFltr.ip.ip_src));
inet_aton("172.28.6.110",&(keys.pktFltr.ip.ip_dst));
keys.pktFltr.protocol.proto.uh_sport = ntohs(1032);
keys.pktFltr.protocol.proto.uh_dport = ntohs(5010);
keys.next = NULL;

key = 522 ;
keys.key_node = 522;
inet_aton("172.28.6.87", &(keys.pktFltr.ip.ip_src));
inet_aton("172.28.6.110",&(keys.pktFltr.ip.ip_dst));
keys.pktFltr.protocol.proto.uh_sport = ntohs(1032);
keys.pktFltr.protocol.proto.uh_dport = ntohs(5011);
keys.next = NULL;
<小时/>

最佳答案

这不起作用,因为您尝试读取二进制文件,而您的文件是文本。

第二 - 您需要在尝试打开文件后检查 fp 是否为 NULL - 只是一个建议。

第三 - 即使文件是二进制文件,这也不起作用,因为

fread(&keys, sizeof (struct classifier), 3, fp);

应该是

//                                      vvv
fread(&keys, sizeof (struct classifier), 1, fp);

由于 keys 不是数组,您需要只读取 block 。

关于c - 使用 fread 时出现段错误,无法从文件中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5964865/

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