从一个txt文件中打印N个数字,并用c语言用简单的气泡进行排序



从txt文件中打印n个数字,并使用c语言中的简单气泡进行排序

我被我的代码卡住了——确切地说,我必须对存储在.txt文件(10000000(中的数字进行排序,具有一个简单的气泡,并且能够接收一个参数"n",该参数指示要订购的整数数量

我的意思是-->你想订多少号?

10

从txt文件中读取10个数字并订购

我有这个,我希望你能帮助我!

#include <stdio.h>
#include <stdlib.h>
void bubblesort(int arr[], int size)
{
int i, j;
for (i = 0;  i < size; i++)
{
for (j = 0; j < size - i; j++)
{
if (arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);
}
}
}
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

int main()
{
int array[100000], i, size;
printf("How many numbers you want to sort:  ");
scanf("%d", &size);
FILE *f;
f=fopen("numeros10millones.txt","rt");
while((size=fgetc(f))!=EOF){
printf("%d",size);
}
fclose(f);
bubblesort(array, size);
printf("nSorted array is ");
for (i = 0; i < size; i++)
printf(" %d ", array[i]);
return 0;
}

您可以使用fscanf
fscanf准确读取文件中的内容
正如@RetiredNinja所指出的,尾部空格将被跳过,但不适用于ex.n

如果你在文件中的数字用空格分隔,你会把它们读成"%d";如果你在文件中的数字都在不同的行上,你会把它们读成"%dn";如果你的数字之间有一个字母,你会把它们读成"%d %c"(例如A 0 B 1 C 2(;等

成功时,fscanf返回读取的元素数(如果读取"%d",返回值为1;如果读取"%d %c",返回值将为2;等等(。
scanf != EOF时,您可以继续读取
如果是fscanf == EOf,则表示发生错误或已到达文件末尾。

示例:

#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubblesort(int arr[], int size)
{
int i, j;
for (i = 0;  i < size; i++)
{
for (j = 0; j < size - 1; j++)
{
if (arr[j] > arr[j+1])
swap(&arr[j], &arr[j+1]);
}
}
}

int main()
{
int i, size;
printf("How many numbers you want to sort:  ");
scanf("%d", &size);
int *array = malloc(sizeof(int)*size);
FILE *f;
f=fopen("numbers","r");
for(i = 0; i < size; i++)
fscanf(f, "%d ", &array[i]);
fclose(f);
bubblesort(array, size);
printf("nSorted array is ");
for (i = 0; i < size; i++)
printf(" %d ", array[i]);
free(array);
return 0;
}

这将读取以以下方式编写的文本文件:

0 4 5 7 1 8 3 2 9 6

相关内容

最新更新