如果我想让用户一次输入多个数,应该如何修改这个过程?
时间: 2024-12-22 17:16:48 浏览: 5
如果你想让用户一次性输入多个数,你可以考虑采用以下几种策略:
1. **使用逗号分隔**:改变提示信息,告诉用户以逗号分隔输入多个数值。在解析时,使用`sscanf`处理字符串,例如 `%d,%d,%d`这样的格式,可以接收连续的整数。
2. **循环读取直到换行**:在循环中,继续读取用户输入直到遇到换行符(`'\n'`)。这样可以允许用户在单次输入中输入多个数字,每输入完一个数字后按回车。
3. **动态调整数组**:如果不确定用户会输入多少个数,可以使用动态数组(如C语言中的`malloc`分配内存),在用户输入每个数后即时增加数组大小,直到用户停止输入。
以下是修改后的示例,采用逗号分隔的方式:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
size_t input_count = 0; // 记录输入的数字个数
int main() {
int *arr;
size_t current_size = 5; // 初始大小
// 动态分配内存
arr = malloc(sizeof(int) * current_size);
while (input_count < current_size && fgets(input, sizeof(input), stdin)) {
char* end;
int num = strtol(input, &end, 10); // 使用strtol处理可能有逗号的字符串
if (*end == '\n') {
if (input_count > 0) {
arr[input_count - 1] = num;
input_count++; // 更新计数
}
} else {
printf("错误!请输入一个数字并用逗号分隔。\n");
}
}
if (input_count >= current_size) {
// 当输入超过当前大小时,扩大数组
size_t new_size = input_count * 2; // 或者根据实际情况计算新的大小
arr = realloc(arr, sizeof(int) * new_size);
current_size = new_size;
}
// 用户输入结束后处理数据...
for (size_t i = 0; i < input_count; i++) {
// ...
}
free(arr); // 最后别忘了释放内存
return 0;
}
阅读全文