C语言中如何动态分配读取文件中的数据
时间: 2023-09-18 08:09:19 浏览: 357
在C语言中,可以使用动态内存分配函数`malloc()`和`realloc()`来动态地分配内存,以便在运行时读取文件中的数据。
下面是一个示例程序,演示了如何动态分配内存来读取文件中的数据:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
fp = fopen("data.txt", "r");
int *data = NULL; // 初始时内存为空
int size = 0; // 初始时数据大小为0
if (fp) {
int value;
while (fscanf(fp, "%d", &value) == 1) { // 读取文件中的整数
size++; // 增加数据大小
data = realloc(data, size * sizeof(int)); // 动态分配内存
if (data) {
data[size - 1] = value; // 将读取的整数保存到data数组中
} else {
printf("动态分配内存失败!\n");
return -1;
}
}
fclose(fp); // 关闭文件
} else {
printf("无法打开文件!\n");
return -1;
}
// 输出读取的数据
for (int i = 0; i < size; i++) {
printf("%d ", data[i]);
}
printf("\n");
// 释放动态分配的内存
free(data);
return 0;
}
```
该程序首先打开一个名为data.txt的文件,然后使用`fscanf()`函数从文件中读取整数,并将它们保存在一个动态分配的数组data中。程序使用`realloc()`函数来动态分配内存,以便在每次读取一个整数时增加数组的大小。最后,程序输出读取的数据,并使用`free()`函数释放动态分配的内存。
需要注意的是,动态分配的内存需要在使用完毕后进行释放,以避免内存泄漏的问题。
阅读全文