这是我的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
我希望将其分配给不同的变量。我该怎么做呢?
C 中的工具是strtok
(GNU 手册,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
生成一个空字符串""
。
如果您使用 Python 编写代码,您会很幸运使用 split()。在 C 中,您可以使用 strtok http://www.cplusplus.com/reference/cstring/strtok/