【发布时间】:2017-05-10 12:27:32
【问题描述】:
我有任务在 c 中制作简单的程序来检查 IP 地址的类别。我的问题是我不是在 c 中工作,而且我不知道我的程序出了什么问题,因为我没有任何 IDE,并且所有东西都在我的 Debian 上编译。
#include <stdio.h>
#include <stdlib.h>
int main() {
int ip[4];
int i=0;
printf("Enter IP address: ");
for(i=0;i<4;i++) {
printf("%d: ",i);
scanf("%s",ip[i]);
}
printf("Your IP address: %03d.%03d.%03d.%03d\n",ip[0],ip[1],ip[2],ip[3]);
if(ip[0]>=0 && ip[0]<=127){
printf("This is class A IP address\n");
printf("Network address: %03d.0.0.0",ip[0]);
}
if(ip[0]>127 && ip[0]<=191){
printf("This is class B IP address\n");
printf("Network address: %03d.%03d.0.0",ip[0],ip[1]);
}
if(ip[0]>191 && ip[0]<224){
printf("This is class C IP address\n");
printf("Network address: %03d.%03d.%03d.0",ip[0],ip[1],ip[2]);
}
return 1;
}
当我有这段代码时,有分段错误,当我在第 18 行时,我做了
scanf("%s",&ip[i]);
我没有任何错误,但我的数字是随机的。
【问题讨论】:
-
将
scanf("%s",&ip[i]);更改为scanf("%d",&ip[i]);。 ip 是 int 数组,ip[i] 是 int 类型。 "%s" 用于读取字符串/字符数组,而 %d 用于 int -
我不知道 beetwen %s 和 %d 有什么区别,我认为这个论点不能重复......谢谢