【发布时间】:2015-04-29 18:17:40
【问题描述】:
我让用户输入一个值,然后根据该值和以下 31 个值定义端口。然后这些端口应该存储在一个数组中,但是由于某种原因,当我从数组中调用每个值时,每个值都是最后一个值。 (例如,如果用户输入 5000,则数组中的每个值最终都是 5031)。将实际数字存储在数组中是有问题的,因为如果我在创建值时打印它们,它们都是正确的。 请原谅不雅的代码,我是新手。谢谢!
//enter own ports
using namespace std;
cout << "enter a port number between 1000-9999: "; // gets port from user input
cin >> startingport;
for (int i=0; i<32; i++) // defines 32 ports starting with user input
{
sprintf(portchar, "%d", startingport+i);
cout << "defining port: " << portchar << endl; // gives correct value
portarray[i] = portchar;
}
cout << portarray[0] << endl; // gives incorrect value
很抱歉应该把这个放在前面——我在另一个文件中有定义。我需要端口是一个字符,因此是端口字符
static int startingport;
static char portchar[6];
static char *portarray[32];
【问题讨论】:
-
portarray的声明在哪里? -
您不会在任何地方更改 portchar 的值
-
使用
std::string,而不是指针。您每次都存储相同的指针,只是覆盖它指向的字符串。 -
@Atuos 是的(sprintf)
-
@deviantfan:写入它指向的数组,但不更改指针。每次都存储相同的指针,因此存在问题。