C语言之切割字符串

[复制链接]
查看808 | 回复6 | 2023-9-1 23:15:46 | 显示全部楼层 |阅读模式

本帖最后由 Ject 于 2023-9-1 23:20 编辑

如题:将字符串进行切割,输入const char * ,分隔符为[,],数据示例[234,211,222]


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void parse_input(const char *input, int *a, int *b, int *c) {
    char *input_copy = strdup(input);
    char *token = strtok(input_copy, ",");
    *a = atoi(token);
    token = strtok(NULL, ",");
    *b = atoi(token);
    token = strtok(NULL, ",");
    *c = atoi(token);
    free(input_copy);
}

int main() {
    const char *input = "255,254,250";
    int a, b, c;
    parse_input(input, &a, &b, &c);
    printf("a: %d\n", a);
    printf("b: %d\n", b);
    printf("c: %d\n", c);
    return 0;
}

办法千千万,欢迎大家用别的办法回帖。

回复

使用道具 举报

Ject | 2023-9-1 23:27:39 | 显示全部楼层

本帖最后由 Ject 于 2023-9-1 23:28 编辑

方法二

#include <stdio.h>

void parse_input(const char *input, int *a, int *b, int *c) {
    sscanf(input, "%d,%d,%d", a, b, c);
}

int main() {
    const char *input = "255,254,250";
    int a, b, c;
    parse_input(input, &a, &b, &c);
    printf("a: %d\n", a);
    printf("b: %d\n", b);
    printf("c: %d\n", c);
    return 0;
}

使用c语言标准输入,未经验证,欢迎验证

回复 支持 反对

使用道具 举报

Ject | 2023-9-1 23:36:21 | 显示全部楼层

方法三


#include stdlib.h

void parse_input(const char *input, int *a, int *b, int *c) {
    char *end;
    *a = strtol(input, &end, 10);
    *b = strtol(end + 1, &end, 10);
    *c = strtol(end + 1, &end, 10);
}

int main() {
    const char *input = "255,254,250";
    int a, b, c;
    parse_input(input, &a, &b, &c);
    printf("a: %d\n", a);
    printf("b: %d\n", b);
    printf("c: %d\n", c);
    return 0;
}
回复 支持 反对

使用道具 举报

ai_mcu | 2023-9-2 09:15:41 | 显示全部楼层
J哥优秀啊,项目中实用功能
明天总会更好
回复 支持 反对

使用道具 举报

Ject | 2023-9-2 12:13:34 | 显示全部楼层
回复

使用道具 举报

jkernet | 2023-9-2 21:10:16 | 显示全部楼层
学习打卡
回复

使用道具 举报

iiv | 2023-9-10 10:33:28 | 显示全部楼层
点赞~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则