在 C 中使用多个定界符进行解析
Parsing with multiple delimiters, in C
在 C 中,解析具有多个定界符的字符串的最佳方法是什么?假设我有一个字符串 A,B,C*D
并想存储 A B C D 的这些值。除了存储最后一个字符串 C*D
和然后用 *
分隔符单独解析。
如果只是 A,B,C,*D
我会使用 strtok() 并忽略 *D
的第一个索引来得到 D,但是 *
之前没有逗号所以我不知道 *
即将到来。
您可以使用 多个 分隔符和 strtok
,第二个参数是一个 C 字符串,其中包含 list 个分隔符它,不仅仅是一个分隔符:
#include <stdio.h>
#include <string.h>
int main (void) {
char myStr[] = "A,B,C*D";
char *pChr = strtok (myStr, ",*");
while (pChr != NULL) {
printf ("%s ", pChr);
pChr = strtok (NULL, ",*");
}
putchar ('\n');
return 0;
}
该代码的输出是:
A B C D
在 C 中,解析具有多个定界符的字符串的最佳方法是什么?假设我有一个字符串 A,B,C*D
并想存储 A B C D 的这些值。除了存储最后一个字符串 C*D
和然后用 *
分隔符单独解析。
如果只是 A,B,C,*D
我会使用 strtok() 并忽略 *D
的第一个索引来得到 D,但是 *
之前没有逗号所以我不知道 *
即将到来。
您可以使用 多个 分隔符和 strtok
,第二个参数是一个 C 字符串,其中包含 list 个分隔符它,不仅仅是一个分隔符:
#include <stdio.h>
#include <string.h>
int main (void) {
char myStr[] = "A,B,C*D";
char *pChr = strtok (myStr, ",*");
while (pChr != NULL) {
printf ("%s ", pChr);
pChr = strtok (NULL, ",*");
}
putchar ('\n');
return 0;
}
该代码的输出是:
A B C D