gpt4 book ai didi

c - 对于我的 C 代码,我读取文件并对它进行排序会产生垃圾输出。为什么?

转载 作者:行者123 更新时间:2023-11-30 19:27:48 27 4
gpt4 key购买 nike

我正在做一个作业:查找文件中 k 个最大的元素。分配一个大小为 k 的数组,当您从文件中读取数字时,将 k 个最大的数字存储在数组中。当您从文件中读取下一个元素时,查找数组是否需要修改。假设读取的下一个元素是 80。由于 80 大于最小元素,因此我们需要将 < 80 的元素向右移动 1 个位置,并为 80 创建空间。在 main() 中使用 argc 和 argv 读取文件名和 k来自用户并计算并打印 k 个最大元素。将程序命名为 allocate3.c 第一个参数是文件名,第二个参数是 k。您需要使用 stdlib.h 中的 atoi() 将字符串转换为整数。

我的问题是我得到的 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);
}

最佳答案

使用像这样的 while 循环条件

虽然(!feof(iFile))....

feof() 检查是否到达文件末尾,否则返回 0

关于c - 对于我的 C 代码,我读取文件并对它进行排序会产生垃圾输出。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55390137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com