[英]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.