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
数组,并打印出输入的数字。
这种方法相对于字符串处理函数更直接,但需要更多的手动处理和控制循环。
