C 正在努力将数据从阵列传递到另一个阵列
所以我在C代码中遇到了数组问题。我认为问题并不严重,但在我的代码上工作了48个小时之后,我真的看不透。 这就是我的问题:我得到了一个名为path的函数,它可以在迷宫中找到两个给定点之间的最短路径。该函数返回一个名为stepcount的int变量。在这里,我存储了从一个点到另一个点所需的步骤数。该信息存储在一个名为“comb”的数组中。这个数组是二维的C 正在努力将数据从阵列传递到另一个阵列,c,arrays,sorting,C,Arrays,Sorting,所以我在C代码中遇到了数组问题。我认为问题并不严重,但在我的代码上工作了48个小时之后,我真的看不透。 这就是我的问题:我得到了一个名为path的函数,它可以在迷宫中找到两个给定点之间的最短路径。该函数返回一个名为stepcount的int变量。在这里,我存储了从一个点到另一个点所需的步骤数。该信息存储在一个名为“comb”的数组中。这个数组是二维的 agents = atoi( argv[4] ); int k=0; unsigned int num = agents*agents; unsi
agents = atoi( argv[4] );
int k=0;
unsigned int num = agents*agents;
unsigned int comb[num][3];//Represents steps form one agent to the target ->
//[][1] = Startpoint; [][2] = Endpoint; [][3] = number of steps;
unsigned int distance[agents][3];
for(int i=0; i<agents; i++)
{
for(int j=0; j<agents; j++)
{
stepcount=path(nodeAgents[i], nodeTargets[j]);
comb[k][0]=i;
comb[k][1]=j;
comb[k][2]=stepcount;
k++;
}
}
for(int i=0; i<num; i++)
{
printf("%d. Steps from Agent %d to Target needed %d: %d\n",i, comb[i][0],comb[i][1],comb[i][2]);
}
agents=atoi(argv[4]);
int k=0;
unsigned int num=代理*代理;
无符号整数梳[num][3]//表示从一个代理到目标的步骤->
//[][1]=起始点;[[2]=终点;[][3]=步数;
无符号整数距离[agent][3];
对于(inti=0;我也是如此,comb[k][0]=i
(和其他)不应该是comb吗[>>>j@Ryyker:我知道我的代码不是最漂亮的,但我知道这段代码正在运行。我以前已经使用过这类代码。所以我认为问题应该出在第二段代码中。@iharob:缓冲区溢出是什么意思?好的,但是I+代理
不能做到这一点,应该是I+=agents
在@iharob,stat之后MENTi+2
与语句i
没有更多的后果。您需要i+=2
for(int i=0; i<num; i+agents)
{
for(int j=k; j<agents; j++)
{
if(comb[j+i][2]<comb[j+i+1][2])
{
distance[j][0] = i;
distance[j][1] = j;
distance[j][2] = comb[j+i][2];
}
}
}
for(int i=0; i<agents; i++)
{
int j = distance[i][0];
int x = distance[i][1];
int y = distance[i][2];
printf("%d. Nearest Target to Agent %d is Target %d. The number of steps needed is %d\n", i, j, x, y);
}