acmwo2013 2013-12-04 03:23 采纳率: 100%
浏览 2522
已采纳

if(scanf("%d", array + i) != 1)运行到这句,程序停止,联机检查是怎么回事??

/*
**读取、排序和打印一列整型值。
*/

#include
#include

/*
**该函数由‘qsort’调用,用于比较整型值 。
*/

int compare_integers( void const *a, void const *b )
{
register int const *pa = a;
register int const *pb = b;

return *pa > *pb ? 1: *pa < *pb ? -1 : 0;//*pa>*pb其结果是
 //1,否则执行(*pa<*pb?-1:0),即*pa<*pb结果为-1,两者相等为0。 

}

int main()
{
int *array;
int n_values;
int i,a;

/*
**观察共有多少个值。 
*/
printf("How many values are there?");
if(scanf("%d",&n_values) != 1|| n_values <= 0)
{
    printf("Illegal number or values.\n");
    exit(EXIT_FAILURE);
 }
 /*
 **分配内存,用于存储这些值。 
*/
//printf("%d\n",n_values);
array = 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("?");
    //printf("%d",a);
    //getchar(); 
    if(scanf("%d", array + i) != 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;

}

  • 写回答

2条回答

  • roy_ss7 2013-12-04 06:06
    关注

    你的程序又两个问题
    1. 你自己所说的运行停止,联机检查

     /*
     **分配内存,用于存储这些值。 
    */
    //printf("%d\n",n_values);
    array = malloc(n_values * sizeof(int));
     **if(array = NULL)** 
    {
        printf("Can't get memory for that many values.\n");
        exit(EXIT_FAILURE);
     }
    

    你把array赋值成NULL了,应该是 if(array == NULL).

    1. 最后打印的时候

      /*
      打印这些值。
      /
      for(i = 0;i < n_values; i += 1)
      printf("%d\n", *
      &array + i
      );

    应该是*(array+i)

    希望对你有帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题