我有任務讓c程序輕鬆檢查IP地址的類別。我的問題是我不在c中工作,我不知道我的程序有什麼問題,因爲我沒有任何IDE,並且所有的東西都在Debian上編譯。簡單的程序檢查ip - scanf分段錯誤
#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]);
我沒有任何錯誤,但我的數字是隨機的。
change'scanf(「%s」,&ip [i]);'to'scanf(「%d」,&ip [i]);'。 ip是int數組,而ip [i]是int類型的。 「%s」用於讀取字符串/字符數組,而%d用於int –
我didn.t知道beetwen%s和%d有差異,我認爲這個參數不能重複發生......謝謝 –