C语言如何读取未知长度的数据存储到数组
时间: 2024-09-08 21:02:38 浏览: 58
二维数组的初始化-c语言数组学习资料
在C语言中,读取未知长度的数据并存储到数组中通常会使用动态内存分配的方法,因为静态定义的数组长度是固定的,而动态内存分配可以在运行时确定所需的大小。一种常见的做法是使用`malloc`或`calloc`函数为数组分配足够的内存,然后使用循环读取数据,直到满足某个特定条件(例如读取到数据流的末尾或达到了某个预设的限制)。
下面是一个使用`malloc`函数动态分配内存并读取数据的简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int count = 0;
int *array = NULL;
int value;
// 假设我们要读取的数据是整数类型
// 读取数据,这里用一个标志变量来模拟结束条件
while (scanf("%d", &value) == 1) {
// 需要更大的数组时,进行动态内存扩展
array = realloc(array, (count + 1) * sizeof(int));
if (array == NULL) {
fprintf(stderr, "内存分配失败。\n");
exit(EXIT_FAILURE);
}
array[count] = value;
count++;
}
// 输出读取的数据
for (int i = 0; i < count; i++) {
printf("%d ", array[i]);
}
printf("\n");
// 释放动态分配的内存
free(array);
return 0;
}
```
在上述代码中,我们首先定义了一个指向整数的指针`array`,然后在`while`循环中使用`scanf`函数读取数据。每次读取成功时,都会检查是否需要扩展数组的大小。如果需要,就使用`realloc`函数增加数组的大小。当读取结束时,我们输出所有读取的数据,并使用`free`函数释放动态分配的内存。
阅读全文