使用fscanf( ) fprintf( ) 尝试从一个in.txt文件 读取10个数据,读到一个数组中,将他们按照从小到大的顺序排序后,写入到out.txt文件中。(in.txt及里面的数据提前创建好,并放在和源程序同目录下) 使用c语言
时间: 2023-09-11 07:05:23 浏览: 88
txt_read.zip_fscanf_matlab fprintf_matlab txt_read txt_textscan
5星 · 资源好评率100%
### 回答1:
下面是一个示例代码,可以实现您的需求:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
int main() {
int arr[MAX_SIZE];
int i, j, temp;
// 从in.txt文件中读取数据到数组中
FILE *in_file = fopen("in.txt", "r");
if (in_file == NULL) {
printf("Failed to open input file.\n");
return 1;
}
for (i = 0; i < MAX_SIZE; i++) {
if (fscanf(in_file, "%d", &arr[i]) != 1) {
printf("Failed to read input file.\n");
return 1;
}
}
fclose(in_file);
// 对数组进行排序
for (i = 0; i < MAX_SIZE - 1; i++) {
for (j = i + 1; j < MAX_SIZE; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
// 将排序后的数组写入out.txt文件中
FILE *out_file = fopen("out.txt", "w");
if (out_file == NULL) {
printf("Failed to open output file.\n");
return 1;
}
for (i = 0; i < MAX_SIZE; i++) {
if (fprintf(out_file, "%d ", arr[i]) < 0) {
printf("Failed to write output file.\n");
return 1;
}
}
fclose(out_file);
printf("Done.\n");
return 0;
}
```
需要注意的几点:
1. 在打开文件时需要检查是否成功打开,如果文件不存在或权限不足打开失败,会返回NULL值。
2. 在读取文件时需要检查是否成功读取,如果读取失败,会返回不等于1的值。
3. 在写入文件时需要检查是否成功写入,如果写入失败,会返回负值。
### 回答2:
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
FILE *input_file = fopen("in.txt", "r");
FILE *output_file = fopen("out.txt", "w");
int arr[10], i;
for (i = 0; i < 10; i++) {
fscanf(input_file, "%d", &arr[i]);
}
bubbleSort(arr, 10);
for (i = 0; i < 10; i++) {
fprintf(output_file, "%d ", arr[i]);
}
fclose(input_file);
fclose(output_file);
return 0;
}
在这个例子中,我们使用fscanf函数从in.txt文件中按行读取10个整数,并将它们存储在长度为10的数组arr中。然后,我们使用自定义的冒泡排序函数bubbleSort将数组arr按照从小到大的顺序排序。最后,我们使用fprintf函数将排序后的数组写入out.txt文件中。
### 回答3:
使用C语言中的fscanf()和fprintf()函数可以完成从一个in.txt文件读取10个数据,将它们按照从小到大的顺序排序后写入out.txt文件中的任务。
首先,需要在程序中打开in.txt和out.txt文件,并创建一个数组来存储读取到的数据,代码如下:
```c
#include <stdio.h>
int main() {
FILE *inputFile, *outputFile;
int data[10];
int i, j, temp;
inputFile = fopen("in.txt", "r");
outputFile = fopen("out.txt", "w");
// 读取in.txt文件的数据到数组中
for(i=0; i<10; i++) {
fscanf(inputFile, "%d", &data[i]);
}
// 对数组中的数据进行排序(冒泡排序)
for(i=0; i<9; i++) {
for(j=0; j<9-i; j++) {
if(data[j] > data[j+1]) {
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
// 将排序后的数据写入out.txt文件中
for(i=0; i<10; i++) {
fprintf(outputFile, "%d ", data[i]);
}
fclose(inputFile);
fclose(outputFile);
return 0;
}
```
运行以上程序后,会从in.txt文件中读取数据到数组中,并对数组中的数据进行排序。然后,程序会将排序后的数据写入out.txt文件中。注意,需要提前创建in.txt文件并在其中存放10个数据,这些数据之间用空格分隔开。
最后,运行完程序后,可以在相同目录下找到out.txt文件,其中会包含排序后的数据。
阅读全文