gpt4 book ai didi

c - 将文本文件读入结构

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:54 28 4
gpt4 key购买 nike

我的文本文件是这样的(文件中的数据还可以增加)

    822
172.28.6.56
172.34.34.53
3244
5434

844
192.150.160.145
192.67.45.123
2344
234


700
192.13.56.6
192.89.95.3
4356
3566

522
172.28.6.137
172.28.6.110
2543
5245

900
255.255.255.255
244.244.244.244
2435
3245

我的结构是这样的

    struct input_par
{
int key_node;
char src_ip[15];
char dst_ip[15];
int src_port;
int dst_port;
};

我必须从存储在文件中的数据中填充这个结构,一旦它完成输入结构的 5 个成员,我必须将这个结构发送到一个函数即,我用

填充结构
    822
172.28.6.56
172.34.34.53
3244
5434

然后我将这个结构发送给一个函数,在将它发送给一个函数之后我应该再次输入文件中的下一个数据结构,即

    844
192.150.160.145
192.67.45.123
2344
234

我必须继续这样做,直到达到 EOF。我用 fscanf 它不能正常工作怎么办?请帮忙

最佳答案

只要这些结构中的每一个之间实际上只有一个空格......我可能会做这样的事情。它非常丑陋,但只要您确定知道最大行大小并且文件结构没有任何问题(额外的空行等),就可以完成工作。否则,您最好编写更好的代码来处理和中断/返回异常情况。

如评论所述,您需要确保增加字符数组以解决末尾的“\n”。这是对我最初发布的内容的一些修改。请注意,如果行尾是基于 Windows 的(我相信),这可能会中断。我添加了一些 hack 来尝试纠正数组空间和\n 字符的问题。

struct input_par
{
int key_node;
char src_ip[21];
char dst_ip[21];
int src_port;
int dst_port;
};


FILE* file = fopen("inputfile.txt", "r");
char linebuffer[21]; //a little extra room here than needed, presumably...
struct input_par ip;
int i = 0, l = 0;

while(fgets(linebuffer, 20, file))
{
ip.key_node = atoi(linebuffer);
fgets(linebuffer, 20, file);
strcpy(ip.src_ip, linebuffer);

l = strlen(linebuffer);
for(i = 0; i < l; ++i){
if(linebuffer[i] == '\n'){
linebuffer[i] = '\0'
break;
}
}

fgets(linebuffer, 20, file);
strcpy(ip.dest_ip, linebuffer);

l = strlen(linebuffer);
for(i = 0; i < l; ++i){
if(linebuffer[i] == '\n'){
linebuffer[i] = '\0'
break;
}
}

fgets(linebuffer, 20, file);
ip.src_port = atoi(linebuffer);
fgets(linebuffer, 20, file);
ip.dst_port = atoi(linebuffer);
fgets(linebuffer, 20, file); //get the empty line
}

关于c - 将文本文件读入结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014045/

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