1、建立两个文件file1.dat,file2.dat。 2、从键盘输入20个随机数,将数存入到file1.dat中。 3、从file1.dat中读取前10个数,并按照从小到大的顺序存入到file2.dat中(不保留原有内容) 4、从file2.dat中读出数据并显示
时间: 2024-03-17 17:44:01 浏览: 77
好的,这是一个简单的文件操作的问题,下面是C语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义常量
#define SIZE 20
#define SIZE1 10
// 定义排序函数
void sort(int a[], int n);
int main()
{
int i, num[SIZE], read_num[SIZE1];
FILE *fp1, *fp2;
// 打开 file1.dat 文件
if ((fp1 = fopen("file1.dat", "wb+")) == NULL)
{
printf("无法打开文件 file1.dat!\n");
exit(1);
}
// 从键盘输入20个随机数,将数存入到 file1.dat 中
printf("请输入20个随机数:\n");
for (i = 0; i < SIZE; i++)
{
scanf("%d", &num[i]);
fwrite(&num[i], sizeof(int), 1, fp1);
}
// 关闭 file1.dat 文件
fclose(fp1);
// 打开 file1.dat 文件
if ((fp1 = fopen("file1.dat", "rb+")) == NULL)
{
printf("无法打开文件 file1.dat!\n");
exit(1);
}
// 从 file1.dat 中读取前10个数,并按照从小到大的顺序存入到 file2.dat 中
for (i = 0; i < SIZE1; i++)
{
fread(&read_num[i], sizeof(int), 1, fp1);
}
sort(read_num, SIZE1);
// 关闭 file1.dat 文件
fclose(fp1);
// 打开 file2.dat 文件
if ((fp2 = fopen("file2.dat", "wb+")) == NULL)
{
printf("无法打开文件 file2.dat!\n");
exit(1);
}
// 将排序后的前10个数存入到 file2.dat 中
for (i = 0; i < SIZE1; i++)
{
fwrite(&read_num[i], sizeof(int), 1, fp2);
}
// 关闭 file2.dat 文件
fclose(fp2);
// 打开 file2.dat 文件
if ((fp2 = fopen("file2.dat", "rb+")) == NULL)
{
printf("无法打开文件 file2.dat!\n");
exit(1);
}
// 从 file2.dat 中读出数据并显示
printf("\nfile2.dat 中的数据为:\n");
for (i = 0; i < SIZE1; i++)
{
fread(&read_num[i], sizeof(int), 1, fp2);
printf("%d ", read_num[i]);
}
// 关闭 file2.dat 文件
fclose(fp2);
return 0;
}
// 排序函数
void sort(int a[], int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
```
这个程序会在当前目录下生成 `file1.dat` 和 `file2.dat` 两个文件,并且按照从小到大的顺序将 `file1.dat` 中前10个数存入到 `file2.dat` 中。最后从 `file2.dat` 中读出数据并显示。
阅读全文