簡體   English   中英

讀取文件並按升序排列整數后打印的垃圾數據

[英]Garbage data printed after reading a file and putting integers in ascending order

我正在處理此代碼以讀取文件test_numbers.txt ,並獲取數字,並按升序打印它們。 當我運行我的程序時,它輸出:

7

8

9

10

40

41

42

43

50

-1843443791

這是正確的。 7-50 的數字放置正確,但問題與 -1843443791 相關。 我試過檢查文本文件並確保沒有錯誤,但我似乎無法找到問題。 這就是為什么它讓我認為代碼存在我無法發現的問題。 這是文本文件: https : //github.com/untamedspud/testNumbers 我目前只關心 test_number.txt 文件。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void insert_in_array_ascending(int array[], int size);
int readfile(int array[], char *fname);
void print_int_array(int array[], int size);
int main()
{
    int primary[100];
    int count = 0;
    count += readfile(primary, "test_numbers.txt");

    insert_in_array_ascending(primary, count);
    count++;

    print_int_array(primary, count);

}
void insert_in_array_ascending(int array[], int size)
{
    int i, j, temp;
    for (i = 0;i<size;++i)
    {
        for (j=i+1;j<size;++j)
        {
            if (array[i]>array[j])
            {
                temp =  array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
    }
}
int readfile(int array[], char *fname)
{
    int i = 0;
    FILE *file = fopen(fname, "r");
    while(fscanf(file, "%d", &array[i]) != EOF)
    {
        insert_in_array_ascending(array, i);
        i++;
    }
    return i;
}
void print_int_array(int array[], int size)
{
    for(int i=0;i<size;i++)
    {
        printf("%d", array[i]);
        printf("\n");
    }
}

在您的原始文件中,您沒有“readfile”函數,讀取發生在 main 函數中。 在那里,您需要一個計數器——這是“計數”,每次讀取后遞增。

然后,您將該部分代碼移動到一個單獨的函數中,但您維護了循環框架(例如,您readfile 的返回添加到初始化為零的計數,這等效於將 readfile 的返回分配給計數)。 更重要的是,您忘記了計數增量

int count = 0;
count += readfile(primary, "test_numbers.txt");

insert_in_array_ascending(primary, count);
count++;
print_int_array(primary, count);

最終結果是 print_int_array 打印的一項多於讀取的一項,並且最后一項的內容是不確定的。 因此你的垃圾。

暫無
暫無

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

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