此代碼是C/C++,並且運行時沒有警告或調試消息。我在GNU GCC編譯器中使用Code :: blocks。這個應用程序完美工作了一次,然後在我不知不覺中混淆的地方。現在每次它都會允許一個IP地址輸入,但然後凍結並關閉。爲什麼?爲什麼這個子網類應用程序凍結?
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int ip[3];
char * inputIP;
int x;
string classValue;
void subnetClass()
{
if (x==0) classValue="Error: first octet may not be zero.";
if (x>0 && x<=126) classValue="Class A";
if (x==127) classValue="Loopback Address";
if (x>=128 && x<=191) classValue="Class B";
if (x>=192 && x<=223) classValue="Class C";
if (x>=224 && x<=239) classValue="Class D";
if (x>=240 && x<=255) classValue="Class E";
if (x>255) classValue="Error: an octet may not be more than 255.";
cout << classValue << endl;
}
int main()
{
cout << "Enter IP address in dotted-decimal form." << endl;
cin >> inputIP;
scanf(inputIP, "%d.%d.%d.%d" , &ip[0],&ip[1],&ip[2],&ip[3]);
int x=ip[0];
subnetClass();
return 0;
}
生成日誌:
檢查是否存在:C:\ IP子網的應用程序\ BIN \調試\ IP子網劃分APP.EXE
執行:「C:.. 。\ CodeBlocks/cb_console_runner.exe「」C:... \ IP subnetting app \ bin \ Debug \ IP subnetting app.exe「(在C:... \ IP子網劃分應用程序中)
進程以狀態終止-1073741510(0分27秒)
請縮進。你的程序是C++或C;它不可能是兩個。 (對我來說,看起來不像C)。你是否通過調試器運行它?它如何凍結_and_關閉? – 2012-02-01 20:27:23
您將字符串提取爲不存在的C風格字符串('inputIP'只是一個未初始化的指針)。 – 2012-02-01 20:29:28
你聲明'int ip [3]'是一個由3個整數組成的數組(索引0..2),然後寫入數組末尾的'ip [3]'。 – Blastfurnace 2012-02-01 20:33:09