我想按字母字符拆分字符串。我开始了strtok
char str[] = "A89 99B0 C11D98 9";
char delim[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *ptr = strtok(str, delim);
while(ptr != NULL)
{
printf("%s\n", ptr);
ptr = strtok(NULL, delim);
}
但我需要保留分隔符。就像是
A89 99
B0
C11
D98 9
我怀疑它是否可行strtok
,我应该寻找另一种方法(例如,正则表达式)。
我想到的一种可能的解决方案是在字符串中的每个字母字符之前插入一个非字母数字分隔符,然后strtok
用于这个分隔符。
这取决于您对数据的处理方式,因为您很可能不需要构造实际的字符串。如果您可以避免复制数据以包含空终止符,则它可能很有用。例如:
#include <stdio.h>
#include <string.h>
char str[] = "A89 99B0 C11D98 9";
char delim[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int
main(void)
{
char *ptr = str;
while( *ptr ){
size_t next = strcspn(ptr + 1, delim) + 1;
fwrite(ptr, 1, next, stdout);
putc('\n', stdout);
ptr += next;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句