首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问个有关问题.关于malloc及自动排序的异常.(源代码见内)

2012-03-28 
请教个问题.关于malloc及自动排序的错误.(源代码见内)#includestdafx.h intcompare_integers(constvoid*

请教个问题.关于malloc及自动排序的错误.(源代码见内)
#include   "stdafx.h "

int   compare_integers(const   void   *a,   const   void   *b)
{

return   *   (int   *)a   -   *   (int   *)b;
}


int   main(int   argc,   char*   argv[])
{
int   *array;
int   n_values;
int   i;

printf( "How   many   values   are   there? ");
if((scanf( "%d ",   &n_values)   !=   1)   ||   n_values   <=   0)
{
printf( "Illegal   number   of   values.\n ");
exit(EXIT_FAILURE);
}


array   =   (int   *)malloc(n_values   *   sizeof(int));
if(array   ==   NULL)
{
printf( "can 't   get   memory   for   that   many   values.\n ");
exit(EXIT_FAILURE);
}

for(i   =   0;   i   <   n_values;   i   +=   1)
{
printf( "? ");
if(scanf( "%d ",   array   +   1)   !=   1)
{
printf( "Error   reading   value   #%d\n ",   i);
free(array);
exit(EXIT_FAILURE);
}
}

qsort(array,   n_values,   sizeof(int),   compare_integers);

for(i   =   0;   i <   n_values;   i   +=   1)
{
printf( "%d\n ",   array[i]);
}

free(array);
return   EXIT_SUCCESS;
     
}


输入大小10,及十个数字.


How   many   values   are   there?10
?2
?3
?4
?1
?5
?7
?8
?6
?0
?9
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
-842150451
9
Press   any   key   to   continue

打印成这样.自己实在查不出问题所在.

[解决办法]
if(scanf( "%d ", array + 1) != 1)
改成
if (scanf( "%d ", array++) != 1)

热点排行