【发布时间】:2018-06-20 04:02:44
【问题描述】:
如何在c中使用scanf扫描IP地址?
我已经是用户了:
scanf(" %d ", &ip_adress)
我应该使用
%d.%d.%d
或者有更简单的方法。
这是我从文件中读取信息的函数:
void read_tree_from(FILE *in, PC **root){
char name[MAX_NAME];
int ip_adress;
int speed;
while(fscanf(in, "%s %d %d", name, &ip_adress, &speed) != EOF){
PC *new = create_new_item(name, ip_adress, speed);
add_to_tree(new, root);
}
}
但是当我运行程序时它工作正常,但在输出文件中它一团糟......
【问题讨论】:
-
fgets然后解析。 -
scanf("%d.%d.%d.%d", &a, &b, &c, &d);可以工作,但也可以接受像999.99.999.99999这样的条目,它不是 IP 地址。如果您使用的是类 unix 系统,您也可以改用inet_pton。 -
向我们展示你的文件内容,至少一行可以看到输入。
-
RACUNAR1 52.123.213.11 100。这是输入一台电脑的名称,它的IP地址和他的互联网速度
-
与其将输出与
fscanf(in, "%s %d %d", ....) != EOF进行比较,因为它是代码不想要的1 值,而是与fscanf(in, "%s %d %d", name, &ip_adress, &speed) == 3比较所需的成功转换次数。