C/C++输入:连续输入,以逗号隔开
如果想在C或C++中进行连续输入,并使用逗号作为分隔符,可以使用适当的输入和字符串处理函数来实现它。以下是一个示例程序,展示了如何连续输入一串以逗号分隔的数字:
#include <stdio.h>
#include <string.h>
#define MAX_INPUT_LENGTH 100
int main() {
char input[MAX_INPUT_LENGTH];
int numbers[MAX_INPUT_LENGTH];
int count = 0;
printf("请输入一串以逗号分隔的数字:\\n");
fgets(input, sizeof(input), stdin);
char* token = strtok(input, ",");
while (token != NULL) {
sscanf(token, "%d", &numbers[count]);
count++;
token = strtok(NULL, ",");
}
printf("输入的数字为:");
for (int i = 0; i < count; i++) {
printf("%d ", numbers[i]);
}
return 0;
}在这个程序中,首先声明了一个字符数组 input 来存储输入的字符串,以及一个整数数组 numbers 来存储解析后的数字。MAX_INPUT_LENGTH 定义了输入的最大长度,您可以根据需要进行调整。
然后,使用 fgets 函数从标准输入读取输入的字符串,并将其存储在 input 中。
接下来,使用 strtok 函数将输入的字符串分割成逗号分隔的片段。循环遍历这些片段,并使用 sscanf 函数将它们转换为整数,并将其存储在 numbers 数组中。
最后,遍历 numbers 数组,并打印出输入的数字。
请注意,此示例假定输入的数字不超过 MAX_INPUT_LENGTH 个,并且输入的格式正确(即没有额外的空格或非数字字符)。可以根据需要进行适当的错误处理和边界检查。
当然,还有其他方法可以实现连续输入并以逗号分隔。除了使用字符串处理函数外,还可以考虑使用字符输入流和循环读取的方法。下面是一个使用循环读取的示例程序:
#include <stdio.h>
#define MAX_INPUT_LENGTH 100
#define MAX_NUMBERS 10
int main() {
int numbers[MAX_NUMBERS];
int count = 0;
char input[MAX_INPUT_LENGTH];
int i = 0;
printf("请输入一串以逗号分隔的数字:\\n");
fgets(input, sizeof(input), stdin);
while (input[i] != '\\0') {
if (input[i] == ',') {
i++;
continue;
}
sscanf(&input[i], "%d", &numbers[count]);
count++;
while (input[i] != ',' && input[i] != '\\0') {
i++;
}
}
printf("输入的数字为:");
for (int i = 0; i < count; i++) {
printf("%d ", numbers[i]);
}
return 0;
}在这个示例程序中,使用了一个字符数组 input 来存储输入的字符串,一个整数数组 numbers 来存储解析后的数字。MAX_INPUT_LENGTH 定义了输入的最大长度,MAX_NUMBERS 定义了数字的最大数量,可以根据需要进行调整。
首先使用 fgets 函数从标准输入读取输入的字符串,并将其存储在 input 中。
然后,使用一个循环遍历 input 字符数组。如果遇到逗号字符,跳过它并继续下一个字符。如果遇到非逗号字符,使用 sscanf 函数将其解析为整数,并将其存储在 numbers 数组中。然后,继续循环,直到遇到下一个逗号或字符串结束。
最后,遍历 numbers 数组,并打印出输入的数字。
这种方法相对于字符串处理函数更直接,但需要更多的手动处理和控制循环。

