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 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题