簡體   English   中英

C程序在使用scanf接受用戶輸入時顯示垃圾值

[英]C program displays garbage value while taking user input using scanf

我正在編寫一個C程序來查找數組中的反轉。 該程序可以順利編譯,但是一旦我運行它,它就會在我將數組作為輸入的地方顯示一個垃圾值。 該程序如下:

#include <stdio.h>
#include <stdlib.h>

int checkInversions(int arr[], int n) {
    int i, j, inverse_count = 0;

    for (i = 0; i < n - 1; i++) {
        for (j = i + 1; j < n; j++) {
            if (arr[i] > arr[j]) {
                inverse_count++;
            }
        }
    }
    return inverse_count;
}

int main() {
    int arr[10], i, n;

    printf("Enter the elements of the array: %d");

    for (i = 0; i <= 10; i++) {
        scanf("%d", &arr[i]);   
    }

    n = sizeof(arr) / sizeof(arr[0]);   

    printf("\n The inverse is: %d", checkInversions(arr, n));

    return 0;
}

現在,當顯示語句Enter the elements of the array: ,在其旁邊是一個像623089這樣的垃圾值。 我可以接受輸入,但結果不正確。 這是什么原因? 在這方面的任何幫助將不勝感激。

您正在使用%d的格式說明符調用printf ,並且未傳遞任何內容來滿足格式字符串期望的變量。 這是未定義的行為。

您打算做的只是:

printf("Enter the elements of the array: ");

另外,由於arr有10個元素,因此您需要依次進行迭代:

for(i = 0; i < 10; i++)

因為您已經知道數組的大小,所以不需要使用sizeof來確定它的大小。 10

我認為您缺少應該在printf上填充%d的變量。 嘗試在printf調用中取出%d ,使其最終如下所示:

printf("Enter the elements of the array: ");

或分配相應的變量以顯示該"%d" ,如下所示:

printf("Enter the elements of the array: %d", variable);

檢查是否有幫助!

您的問題是printf("Enter the elements of the array: %d"); 您告訴程序要打印一個整數,但沒有指定是哪個整數。 刪除%d ,垃圾值將消失,如下所示: printf("Enter the elements of the array: ");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM