C htons或inet_地址数组

C htons或inet_地址数组,c,C,我是编程新手 我正在使用FGET读取文件,并已将文件内容放入数组中 文件内容类似于用换行符分隔的地址\n: 192.168.1.0 192.168.1.1 192.168.1.5 192.168.1.7 我正在尝试使用网络函数inet_addr和htons中的数组进行连接 如何将数组用于这样的函数中 一个接一个?我该怎么做 感谢您的帮助。inet\u addr已过时,因为它无法根据返回代码中的错误条件确定255.255.255.255的有效输入。使用inet_aton intead char

我是编程新手

我正在使用FGET读取文件,并已将文件内容放入数组中

文件内容类似于用换行符分隔的地址
\n

192.168.1.0
192.168.1.1
192.168.1.5
192.168.1.7
我正在尝试使用网络函数inet_addr和htons中的数组进行连接

如何将数组用于这样的函数中

一个接一个?我该怎么做


感谢您的帮助。

inet\u addr已过时,因为它无法根据返回代码中的错误条件确定255.255.255.255的有效输入。使用inet_aton intead

char buffer[81];
struct in_addr ip;
while(fgets(buffer, 80, f)) {
    buffer[strlen(buffer) - 1] = 0;
    if (1 == inet_aton(buffer, &ip)) {
        /* good line */
    } else {
        /* bad line */
    }
}

到目前为止你已经试过什么了?请出示您的实际代码。是的,您必须一次处理一个地址
inet\u addr()
一次只接受一个地址,就像
connect()
一样。您试图用地址实现什么?建议在循环中使用
strtok()
,1)检查对strtok()的每次调用的返回值,以确保找到新的子字符串。2) 如果找到子字符串,则将该子字符串传递给inet_addr()。读取每一行之后,对strtok()的调用看起来像:
char*address;第一次调用的if(address=strtok(inputbuffer,”){inet_addr(address);
,以及下面的调用的if(address=strtok(NULL,”){inet_addr(address);`在我阅读您的问题时,地址不是用换行符分隔的,而是用空格(空格、换行符、制表符等)分隔的@用户3629249,这是由于问题中的格式错误造成的。
fgets()
null终止其输出,您不需要手动执行此操作。如果输出尚未以null终止,则使用
strlen()
将不起作用。此外,该问题要求您提供有关
inet\u addr()
,而不是
inet\u aton()的帮助
.fgets使尾随的换行符保持打开状态——该行将其截断。