c语言中如何一次性输入数组
时间: 2024-10-01 16:10:03 浏览: 47
在C语言中,一次性输入数组通常涉及到动态内存分配和循环读取用户输入。由于C语言本身并不直接支持从标准输入流一次读取整个数组,因此你需要手动控制循环次数。下面是一个简单的示例,演示如何在一个字符串数组中一次性输入字符:
```c
#include <stdio.h>
#include <stdlib.h> // 需要用到malloc()函数
#define MAX_INPUT 100 // 用户最多输入的元素数量
// 动态分配数组
char* inputArray;
size_t size;
// 输入并初始化数组
void inputArrayOnce() {
printf("请输入数组元素,用空格分隔:");
char input[MAX_INPUT + 1]; // 加1是为了包含结束符'\0'
fgets(input, sizeof(input), stdin); // 从stdin读取输入
// 移除行尾的换行符
input[strlen(input) - 1] = '\0';
// 分割字符串,存储到动态数组
size = strspn(input, " ");
inputArray = (char*) malloc(size * sizeof(char)); // 分配空间
if (inputArray == NULL) {
printf("内存分配失败!\n");
exit(1);
}
strncpy(inputArray, input, size);
// 如果有剩余字符(不是最后一个元素后的空格),继续读取
while (strchr(input, ' ') != NULL) {
size += strspn(input + size, " ");
inputArray = realloc(inputArray, size * sizeof(char)); // 扩展数组
if (inputArray == NULL) {
printf("内存扩展失败!\n");
exit(1);
}
strncpy(&inputArray[size], input + size, strspn(input + size, " "));
}
}
int main() {
inputArrayOnce();
// 现在inputArray里包含了用户的输入
for (size_t i = 0; i < size; i++) {
printf("元素 %d: %c\n", i, inputArray[i]);
}
free(inputArray); // 释放内存
return 0;
}
```
阅读全文