scanf逗号分隔,没有空格混合数字和字符串

时间:2017-11-09 14:30:35

标签: c scanf

我正在尝试从调制解调器响应中解析出值,而我还没有找到一种方法可以在字符串后面扫描出最后一个整数值。使这更复杂的原因是所有值都是可变长度,唯一可能的分隔符是,字符。我也不能使用strtok,因为im在多线程嵌入式系统上而另一个线程已经使用了strtok。

sscanf格式化程序允许我解析仅在,上拆分的所有4个值。

#include <stdio.h>

int main(void)
{
    char *source = "+UUBTGRW:0,52,0100,1";

    int one, two, four;
    char string[100];

    int count = sscanf(source, "+UUBTGRW:%u,%u,%[^,]s%u", &one, &two, string, &four);

    printf("Source string: %s\n", source);
    printf("Count: %u , One: %u , Two: %u , String: %s , Four: %u \n", count, one, two, string, four);

    return 0;
}

输出:

Source string: +UUBTGRW:0,52,0100,1
Count: 3 , One: 0 , Two: 52 , String: 0100 , Four: 0

所需的输出将是:

Count: 4 , One: 0 , Two: 52 , String: 0100 , Four: 1

0 个答案:

没有答案