用C实现:描述 请进行如下输入输出的转换: 例如: "1" -> "1" "1-3" -> "1,2,3" "1-2,4" -> "1,2,4" "1-4,7-10" -> "1,2,3,4,7,8,9,10" "1-4,6,7-10" -> "1,2,3,4,6,7,8,9,10" 输入描述 给定一个整形数组的字符串,带"-"和","进行分隔,例如"1-2,4,6-7" 。 输出描述 输出为输入字符串范围的整数,使用","分隔。
时间: 2023-07-19 19:12:49 浏览: 96
整数与字符串转换的C实现
5星 · 资源好评率100%
以下是实现该功能的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
void parse_range(char *range, int *res, int *res_len) {
char *pch = strtok(range, ",");
while (pch != NULL) {
int start, end;
if (sscanf(pch, "%d-%d", &start, &end) == 2) {
for (int i = start; i <= end; i++) {
res[*res_len] = i;
(*res_len)++;
}
} else {
int num;
sscanf(pch, "%d", &num);
res[*res_len] = num;
(*res_len)++;
}
pch = strtok(NULL, ",");
}
}
int main() {
char input[MAX_LEN];
fgets(input, MAX_LEN, stdin);
input[strlen(input) - 1] = '\0'; // 去掉输入字符串最后的换行符
int res[MAX_LEN], res_len = 0;
parse_range(input, res, &res_len);
for (int i = 0; i < res_len; i++) {
printf("%d", res[i]);
if (i < res_len - 1) {
printf(",");
}
}
printf("\n");
return 0;
}
```
该程序首先读入输入字符串,然后调用 `parse_range` 函数解析范围。在 `parse_range` 函数中,我们使用 `strtok` 函数按逗号分隔出每个范围,然后再根据每个范围中是否包含连字符 "-" 来判断是单个数字还是一个范围,最后将范围中的所有数字都存入结果数组 `res` 中。最后,程序输出 `res` 数组中的所有数字,使用逗号分隔。
阅读全文