c语言代码:打开一个文件写入二维数组
时间: 2023-12-09 14:51:10 浏览: 107
Sure, I can help you with that! Here's an example code to open a file and write to a 2D array in C:
```
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main() {
int arr[ROWS][COLS];
FILE *fptr;
// Open file for writing
fptr = fopen("file.txt", "w");
// Write to the file and the array
for (int i=0; i<ROWS; i++) {
for (int j=0; j<COLS; j++) {
arr[i][j] = i+j;
fprintf(fptr, "%d ", arr[i][j]);
}
fprintf(fptr, "\n");
}
// Close file
fclose(fptr);
// Done!
return 0;
}
```
I hope that helps! Let me know if you have any further questions.
相关问题
c语言中创建一个5*5的二维数组,并将它写入一个文件中。 在另一个程序中,从这个文件读取二维数组,并排序,排序后再次写入文件中
好的,下面是C语言的解答:
首先,创建一个5*5的二维数组并将其写入文件中,你可以使用以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 5
#define COL 5
int main() {
int arr[ROW][COL];
srand(time(NULL)); // 随机数种子,用于生成随机数
FILE* fp = fopen("array.txt", "w");
if (fp != NULL) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
arr[i][j] = rand() % 100; // 生成0到99之间的随机数
fprintf(fp, "%d ", arr[i][j]); // 写入文件
}
fprintf(fp, "\n");
}
fclose(fp);
}
return 0;
}
```
上述代码中,我们使用了C语言中的文件操作函数,打开文件并将随机生成的二维数组写入文件array.txt中。
接下来,我们需要从文件中读取二维数组,并且排序。你可以使用以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROW 5
#define COL 5
int cmp(const void* a, const void* b) {
return *(int*)a - *(int*)b; // 升序排序
}
int main() {
int arr[ROW][COL];
FILE* fp = fopen("array.txt", "r");
if (fp != NULL) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
fscanf(fp, "%d", &arr[i][j]); // 从文件中读取二维数组
}
}
fclose(fp);
}
// 对数组进行排序
int len = ROW * COL;
int* arr_sorted = (int*)malloc(sizeof(int) * len);
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
arr_sorted[i * COL + j] = arr[i][j]; // 将二维数组转换为一维数组
}
}
qsort(arr_sorted, len, sizeof(int), cmp); // 排序
fp = fopen("array_sorted.txt", "w");
if (fp != NULL) {
for (int i = 0; i < len; i++) {
fprintf(fp, "%d ", arr_sorted[i]); // 将排序后的数组写入文件中
}
fclose(fp);
}
free(arr_sorted); // 释放内存
return 0;
}
```
上述代码中,我们首先从文件中读取二维数组,并将其存储到二维数组arr中。然后,我们将二维数组转化为一维数组,并使用C语言标准库函数qsort对其进行排序。最后,我们将排序后的数组写入文件array_sorted.txt中。
希望能够帮助到你!
用C语言创建一个5*5的二维数组,并将它写入一个文件中。 在另一个程序中,从这个文件读取二维数组,并排序,排序后再次写入文件中
好的,下面是您需要的 C 语言代码示例。
创建一个 5x5 的二维数组,并将它写入文件:
```c
#include <stdio.h>
int main() {
int arr[5][5] = {{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}};
FILE* fp = fopen("array.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
fprintf(fp, "%d ", arr[i][j]);
}
fprintf(fp, "\n");
}
fclose(fp);
return 0;
}
```
这段代码使用了 C 语言中的二维数组来创建一个 5x5 的数组,并将它写入了一个名为 `array.txt` 的文件中。每行数字之间用空格隔开,每行末尾加上了一个换行符。
接下来,您需要另一个程序来读取这个文件并对数组进行排序。这里是另一个代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int cmpfunc(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
int arr[25];
FILE* fp = fopen("array.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
for (int i = 0; i < 25; i++) {
fscanf(fp, "%d", &arr[i]);
}
fclose(fp);
qsort(arr, 25, sizeof(int), cmpfunc);
fp = fopen("sorted_array.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
for (int i = 0; i < 25; i++) {
fprintf(fp, "%d ", arr[i]);
if ((i + 1) % 5 == 0) {
fprintf(fp, "\n");
}
}
fclose(fp);
return 0;
}
```
这段代码首先从文件中读取了之前写入的二维数组,并将它存储在一个一维数组中。然后,使用标准库函数 `qsort` 对它进行排序。最后,将排序后的数组写入一个名为 `sorted_array.txt` 的文件中。
阅读全文