gpt4 book ai didi

c - 使用 fread() 读取结构体

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

我正在尝试使用 fread 将数据输入到此结构中,我已将此结构定义为这样的 header

    #ifndef__HEADER_H__
#define__HEADER_H__
struct input_par
{
char key[5];
char key_node[5];
char src_ip[15];
char dst_ip[15];
char src_port[5];
char dst_port[5];
};

#endif

在我的主函数中,在文件 input_data 中我存储了此数据

       @822!822!172.28.6.137!172.28.6.110!5000!6000| 

对我来说@意味着数据的开始,|意味着这里有效数据的结束我想输入822到key,822到key_node,172.28.6.137到src_ip等等6000到dst_port,我无法出于测试目的这样做,我只是输入822到key。我是第一次使用 fread 请帮忙

    #include"file_header"
#include <stdio.h>
main()
{
int i;
struct input_par input_par;
FILE *fp;
fopen("input_data","r");
if(*fp == "@")
{
while(*fp!= "!")
{
for(i=0;i<5;i++)
{
fread(&input_par.key, sizeof(input_par),1,fp);
printf("%d\n",input_par.key);
}

}
}
fclose(fp);
}

最佳答案

嗯,您的代码中有一些错误。正如 @unaperson 指出的,这不是 FILE 的使用,并且 definitely you should learn about it .

如果您要读取文件中的每个字符,并将 @ 解释为分隔符,则可以使用 fgetc而不是 fread,它用于读取大块。请注意,fgetc 返回一个 int,以便能够检查文件结束错误条件(您无法再读取)。

您可以读取每个字段直到下一个分隔符,并将其存储在结构体的相应字段中。

关于c - 使用 fread() 读取结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5974529/

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