程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-if(scanf(%d, array + i) != 1)運行到這句,程序停止,聯機檢查是怎麼回事??

c語言-if(scanf(%d, array + i) != 1)運行到這句,程序停止,聯機檢查是怎麼回事??

編輯:編程綜合問答
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;

}

最佳回答:


你的程序又兩個問題
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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved