世界上有什么问题:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int array[20];
int *pArray = array;
int count;
int i = 0;
while(1)
{
scanf("%d", array+i );
if(*(pArray+i) == -1) break;
i++;
}
printf("Contents: ");
while(1){
if (*(pArray + i) != -1)
{
printf("%d ", *(pArray + i) );
i++;
}
}
return 0;
}
谢谢。我试图从用户获取输入,然后显示数组的内容。我打算按顺序安排它们,但是我会等到有人回复。
答案 0 :(得分:1)
您可能面临stack around the variable array is corrupted
的错误。原因是如果给定输入为-1,则首先获取输入然后终止循环。
scanf("%d", array+i );
if(*(pArray+i) == -1) break;
现在假设i=20
将会发生什么?
当然,你的代码会在scanf
语句中崩溃,因为它会尝试访问不允许的数组+20(第20个索引)。
你还需要首先初始化数组,因为当你声明一个数组时,它包含垃圾值,或许用0来初始化最后一个索引就可以完成这项工作。您可以使用以下代码:
#include <stdio.h>
int main(void)
{
int array[20];
/*INITIALIZE THE LAST INDEX WITH -1 TO APPLY THE TERMINATING CONDITION*/
array[19] = -1;
int i = 0;
while(1)
{
scanf("%d", array+i );
i++; //INCREMENT HERE TO CHECK THE NEXT INDEX INSTEAD OF CHECKING THIS ONE
if(array+i == -1)
{
scanf("%d", array+i ); //TAKE THE INPUT FOR THE LAST INDEX
break; //TERMINATE THE LOOP
}
}
printf("Contents: ");
i = 0; // RESET the counter back to ZERO.
while(i != 20)
{
printf("%d ", array[i] );
i++;
}
return 0;
}
您似乎没有任何理由使用pArray
。 array
也可以完全按照pArray
的要求进行操作。要安排订单,您必须应用任何排序算法。希望这会有所帮助。