c语言从键盘输入数组,并不知道数组长度
时间: 2023-09-18 21:09:22 浏览: 348
如果要从键盘输入数组,但是不知道数组的长度,可以使用动态内存分配函数malloc()来动态分配内存空间。具体做法如下:
1. 先输入一个较大的数n,表示数组的最大长度;
2. 调用malloc()函数动态分配n个元素的内存空间;
3. 使用scanf()等函数从键盘输入数组元素;
4. 根据输入的元素个数,重新调整内存空间大小,使其正好能够容纳输入的元素。
示例代码如下:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i;
int *arr;
printf("请输入数组的最大长度:");
scanf("%d", &n);
arr = (int*)malloc(n * sizeof(int));
if (arr == NULL) {
printf("内存分配失败!");
exit(1);
}
printf("请输入数组元素,以0结束:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] == 0) {
break;
}
}
arr = (int*)realloc(arr, i * sizeof(int));
if (arr == NULL) {
printf("内存重新分配失败!");
exit(1);
}
printf("您输入的数组为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
```
以上代码中,先通过scanf()函数输入数组的最大长度n,然后调用malloc()函数分配n个元素的内存空间,接着使用for循环从键盘输入数组元素,当输入0时,退出循环;最后使用realloc()函数重新调整内存空间大小,使其正好能够容纳输入的元素。注意,realloc()函数调整内存空间大小后,原来的内存空间会被释放,因此需要重新将arr指针指向新的内存空间。
阅读全文