我正在尝试使用fread将数据输入到此结构中,我已将此结构定义为此类标题
#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
在我的main函数中,在文件input_data中我存储了这个数据
@822!822!172.28.6.137!172.28.6.110!5000!6000|
对我来说@表示数据的开始和|意味着有效数据的结束在这里我想输入822到密钥,822到key_node,172.28.6.137到src_ip,依此类推到6000到dst_port,我无法为测试目的这样做我只是输入822键。我是第一次使用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);
}
答案 0 :(得分:0)
嗯,你的代码中有一些错误。正如@unaperson指出的那样,这不是使用FILE和definitely you should learn about it。
如果要读取文件中的每个字符,并将@解释为分隔符,则可以使用fgetc代替fread,后者用于读取大块。请注意,fgetc返回一个int,以便能够检查文件结束时的错误情况(您无法再读取)。
您可以读取每个字段直到下一个分隔符,并将其存储在结构的相应字段中。