【发布时间】:2016-05-17 12:19:38
【问题描述】:
尝试学习 C 基础知识。我正在将数组写入文件。我成功地将数据写入文件并将其读回。然而,数据以二进制形式写入文件,这不是人类可读的。 我们如何将数据写入文件,使其成为人类可读的格式。
#include<stdio.h>
typedef struct array
{
int n;
int arr[100];
} array_t;
void print_array(array_t e)
{
printf("%s\n", __FUNCTION__);
int i = 0;
for(i = 0; i < e.n; i++)
printf("%d\n", e.arr[i]);
}
int main()
{
FILE *f1;
array_t e, f;
int i;
printf("Enter Array Size:\n");
scanf("%d",&e.n);
for(i = 0; i < e.n; i++)
{
int temp;
printf("Enter %dth element\n", i+1);
scanf("%d",&temp);
e.arr[i] = temp;
}
print_array(e);
f1 = fopen("one.txt", "wb+");
int ret = fwrite(e.arr, sizeof(int), e.n, f1);
fclose(f1);
f1 = fopen("one.txt", "rb");
f.n = e.n;
for(i = 0; i < e.n; i++) {
int temp = 0;
fread(&temp, sizeof(int), 1, f1);
f.arr[i] = temp;
}
printf("This is read array\n");
print_array(f);
return 0;
}
【问题讨论】:
-
将整数转换为字符串并写入字符串。
-
您需要一个不属于您的数组值域的分隔符。
-
我相信 fwrite 应该有你抱怨的行为。看看 fprintf,它可能就是你要找的。 (cplusplus.com/reference/cstdio/fprintf)
-
您使用
printf以人类可读的格式打印到屏幕上,然后使用fprintf在文件中执行相同操作。 -
...使用
f1 = fopen("one.txt", "wt")以文本模式打开文件后