c语言怎样输入一个不定长度的数组
时间: 2024-11-05 07:31:47 浏览: 35
在C语言中,输入一个不定长度的数组通常涉及到动态内存分配,因为标准库函数如`scanf`或`fgets`通常处理的是固定大小的数组。下面是一种常见的做法:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc函数
// 定义一个结构体来存储数组元素和其个数
typedef struct {
int *data; // 动态分配的整型数组指针
size_t size; // 数组的元素个数
} DynamicArray;
// 功能:读取用户输入,分配并初始化数组
void inputDynamicArray(DynamicArray *array) {
printf("请输入数组元素的数量: ");
if (scanf("%zu", &array->size) != 1 || array->size <= 0) {
printf("无效的输入,退出程序。\n");
exit(1);
}
// 为数组分配内存
array->data = (int*) malloc(array->size * sizeof(int));
if (!array->data) { // 检查内存分配是否成功
perror("Memory allocation failed");
exit(1);
}
// 读取每个数组元素
for (size_t i = 0; i < array->size; i++) {
printf("请输入第 %zu 个元素: ", i+1);
scanf("%d", &array->data[i]);
}
}
// 使用示例
int main() {
DynamicArray myArray;
inputDynamicArray(&myArray);
// 现在你可以操作这个动态数组了...
// ...
free(myArray.data); // 一定要记得释放内存
return 0;
}
```
在这个例子中,我们首先询问用户需要多少个元素,然后动态地为它们分配内存。每次读入一个元素后,都会将它存到相应的数组位置。记住,在不再需要这个数组时,必须调用`free`释放所占内存。
阅读全文