c语言输入一个未知长度的数组
时间: 2023-11-12 09:07:32 浏览: 219
在C语言中,输入一个未知长度的数组可以使用循环结合scanf()函数来实现。具体实现方法如下:
1. 定义一个数组和一个计数器变量i,初始值为0。
2. 使用do-while循环结合scanf()函数来输入数组元素,每输入一个元素,计数器变量i加1。
3. 当输入的字符为回车符时,循环结束,此时数组的长度即为计数器变量i的值。
下面是一个示例代码:
```
int arr[100]; // 定义一个长度为100的数组
int i = 0; // 计数器变量i的初始值为0
char c; // 定义一个字符变量c,用于接收输入的字符
do {
scanf("%d", &arr[i]); // 输入一个数组元素
i++; // 计数器变量i加1
c = getchar(); // 接收输入的字符
} while (c != '\n'); // 当输入的字符为回车符时,循环结束
```
需要注意的是,上述代码中的数组长度为100,如果输入的数组长度超过了100,就会导致数组越界的问题。因此,在实际应用中,需要根据实际情况来定义数组的长度。
相关问题
c语言输入一个长度未知的数组
在C语言中,如果要输入一个长度未知的数组,可以使用动态内存分配函数`malloc()`来动态地为数组分配内存。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h> // 包含动态内存分配函数malloc和free的头文件
int main() {
int len;
int *arr; // 定义指向int类型的指针arr
printf("Please input the length of array:\n");
scanf("%d", &len);
arr = (int *)malloc(len * sizeof(int)); // 动态分配内存
printf("Please input %d integers:\n", len);
for (int i = 0; i < len; i++) {
scanf("%d", &arr[i]); // 依次输入整数
}
printf("The array you input is:\n");
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]); // 输出输入的数组
}
printf("\n");
free(arr); // 释放动态分配的内存
return 0;
}
```
在程序运行时,先输入数组长度,然后输入相应长度的整数,程序会将这些整数存入动态分配的数组中并输出:
```
Please input the length of array:
5
Please input 5 integers:
1 2 3 4 5
The array you input is:
1 2 3 4 5
```
c语言实现输入一个未知长度的数组
可以使用动态内存分配函数malloc()来实现。可以先定义一个初始容量比较小的数组,然后通过循环不断读入输入的数据,当数组已满时使用realloc()函数动态扩容,直到全部数据读入完成。以下是C语言示例代码:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int capacity = 10; // 初始容量为10
int *arr = malloc(capacity * sizeof(int)); // 动态分配数组空间
int size = 0; // 当前数组大小
printf("请输入一些整数(输入-1表示结束):\n");
int num;
while (1) {
scanf("%d", &num);
if (num == -1) {
break;
}
if (size >= capacity) { // 当数组已满时,动态扩容
capacity *= 2;
arr = realloc(arr, capacity * sizeof(int));
}
arr[size++] = num; // 将输入的数放入数组中
}
// 输出数组中的内容
printf("数组中的数为:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放动态分配的数组空间
return 0;
}
```