如何使用分隔符(空格)剪切字符串,就像在php中的substr一样?

时间:2013-04-08 06:48:36

标签: c char substring delimiter substr

这是我的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

     

bankcharge:0.09

     

GRT:0.10

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

2 个答案:

答案 0 :(得分:3)

C中的工具为strtokGNU ManualSUS V2 Spec)。您第一次使用字符串和分隔符集调用strtok。然后,对于后续部分,使用NULL和分隔符集调用strtok,它将继续从它停止的位置进行搜索。

#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为(缺失)值生成空字符串""

答案 1 :(得分:0)

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