Я выполняю задание, которое: Найти k самых больших элементов файла.Выделите массив размера k, и пока вы читаете числа из файла, сохраните k самых больших чисел в массиве.Когда вы читаете следующий элемент из файла, найдите, нужно ли изменять массив или нет.Предположим, что следующим считанным элементом является 80. Поскольку 80 больше, чем наименьший элемент, нам нужно сместить элементы <80 вправо на 1 позицию и создать пробел для 80. В main () используйте argc и argv для чтения имени файла и kот пользователя и вычислить и распечатать k самых больших элементов.Назовите вашу программу assign3.c Первый параметр - это имя файла, а второй - k.Вам нужно использовать atoi () в stdlib.h для преобразования строк в целое число. </p>
Моя проблема в том, что я получаю значения мусора как для arr, так и для отсортированного arr?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
int main(int argc, char *argv[])//
{
FILE *iFile;//file pointer
int i = 0, n, temp = 0, count = 0, j;
int k = atoi(argv[1]);//convert strings into int
int *arr = (int *)malloc(k * sizeof(int));////allocate an array of size k
iFile = fopen("a.txt", "r");//opens file
if (iFile == NULL)
return -1;
while (feof(iFile) <= 0)
{
fscanf(iFile, "%d", arr);
printf("arr= %d\n", arr);
count = count++;
for (i = 0; i < count; i++) //Loop for descending ordering
{
for (j = 1; j <= count; j++) //Loop for comparing other values
{
if (arr[j] < arr[i]) //Comparing other array elements
{
temp = arr[i]; //Using temporary variable for storing last value
arr[i] = arr[j]; //replacing value
arr[j] = temp; //storing last value
}
}
}
}
for (i = 0; i < k + 1; i++)
printf("sorted arr is =%d\n", arr[i]);
fclose(iFile);
free(arr);
}