题目:有一个文本文件numbers.txt,其中有20个整数,每个整数占一行,编写程序将这些整数从小到大顺序排好后,重新写入到该文件中, 要求排序前和排序后都要输出该文件的内容。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
FILE* fp_read;
FILE* fp_write;
char str_nums[20];
const char* filePath = "E:\\numbers.txt";
fp_read = fopen(filePath, "r");
fp_write = fopen(filePath, "w");
if (fp_read == NULL) {
perror("文件打开失败!");
return EXIT_FAILURE;
}
while(fp_read !=NULL) {
if (fgets(str_nums, sizeof(str_nums), fp_read) == NULL) {
break;
}
}
for (int i = 0; i < 10; i++) {
printf("%c", str_nums[i]);
}
int* intArray = charArrayToIntArray(str_nums, 20);
bubbleSort(intArray, 20);
for (int i = 0; i < 20; i++) {
fprintf(fp_write, "%d\n", intArray[i]);
}
if (intArray != NULL) {
for (int i = 0; i < 20; i++) {
printf("%d ", intArray[i]);
}
printf("\n");
}
free(intArray);
fclose(fp_read);
fclose(fp_write);
return 0;
}
int* charArrayToIntArray(char* charArray, int* size) {
int length = strlen(charArray);
int* intArray = (int*)malloc(length * sizeof(int));
if (intArray == NULL) {
*size = 0;
return NULL;
}
for (int i = 0; i < length; i++) {
intArray[i] = charArray[i] - '0';
}
*size = length;
return intArray;
}
void bubbleSort(int* arr, int length) {
for (int i = 0; i < length - 1; i++) {
for (j = 0; j < length - (i + 1); j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = arr[j];
}
}
}
}