0

这是我的Mystr价值:

其他:0.01 罚款:0.02 pdi:0.03 pdp:0.04 利息:0.05 本金:0.06 cbu:0.07 储蓄:0.08 银行手续费:0.09 grt:0.10

我想要的输出:

其他:0.01

罚分:0.02

pdi:0.03

pdp:0.04

利息:0.05

本金:0.06

cbu:0.07

节省:0.08

银行手续费:0.09

重量:0.10

我希望将其分配给不同的变量。我该怎么做呢?

4

2 回答 2

3

C 中的工具是strtokGNU 手册SUS V2 规范)。您strtok第一次调用时设置了字符串和分隔符。然后,对于后续部分,strtok使用 NULL 和分隔符集进行调用,它将继续从中断的位置开始搜索。

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

int main(void) {
    char x[] = "others:0.01 penalty:0.02 pdi:0.03 pdp:0.04 interest:0.05 principal:0.06 cbu:0.07 savings:0.08 bankcharge:0.09 grt:0.10";
    char toPrint[sizeof(x) * 2];
    char *a;

    strcpy(toPrint,strtok(x," "));
    strcat(toPrint,"\n");

    while ((a=strtok(NULL," ")) != NULL) {
        strcat(toPrint,a);
        strcat(toPrint,"\n");
    }
    fputs(toPrint,stdout);
}

印刷

others:0.01
penalty:0.02
pdi:0.03
pdp:0.04
interest:0.05
principal:0.06
cbu:0.07
savings:0.08
bankcharge:0.09
grt:0.10

请注意,strtok修改原始数组。在程序结束时,x数组包含"1\02\03\04". 所有分隔符都被零覆盖。另请注意,字符串中的两个连续分隔符将导致为(缺失)值strtok生成一个空字符串""

于 2013-04-08T06:50:18.300 回答
0

如果您使用 Python 编写代码,您会很幸运使用 split()。在 C 中,您可以使用 strtok http://www.cplusplus.com/reference/cstring/strtok/

于 2013-04-08T06:59:52.990 回答