此代码是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