C语言还有哪些其他方式可以接收数组作为输入?
时间: 2024-09-30 22:08:50 浏览: 35
在C语言中,除了使用`scanf`函数来接收整型或浮点型数组作为输入,还有以下几种方式:
1. **fgets** 函数 + 字符串转数组:如果你希望接收字符串数组,可以使用`fgets`函数结合`sscanf`函数将每行的字符串转换为数组。例如,假设你要接收一行分隔的整数:
```c
char input[SIZE][10]; // 假设每个元素最多9个字符
fgets(input, SIZE, stdin); // 从标准输入读取一行数据
for (int i = 0; i < SIZE && input[i] != '\n'; i++) {
sscanf(input + i, "%d", &arr[i]); // 解析并存储数字
}
```
2. **getchar** 和 **putchar**: 如果是字符数组,可以逐个获取用户输入,直到遇到换行符:
```c
char user_input[SIZE];
while (true) {
user_input[i++] = getchar(); // 读取字符
if (user_input[i - 1] == '\n') break; // 当遇到换行符时结束输入
}
arr = realloc(arr, i); // 调整数组大小并存储
```
3. **命令行参数传递**:如果是在命令行运行程序,可以使用`argc`和`argv`参数直接获取命令行参数作为数组。
注意,以上所有方式都需要对用户输入进行错误检查和处理,以防溢出、空指针等问题。特别是当处理用户输入的数据范围不确定时,记得进行适当的边界检查。
阅读全文