我正在尝试拆分字符串,如下所示:1.97E+13,1965.10.30,12:47:01 AM,39.1,23,greece,,,,,10,4.8,4.6,4.6,4.8,4.6,4.7我使用strtok并将,作为分隔符,但由于某些逗号之间没有值,因此出现分段错误。将空值赋给连续逗号的正确方法是什么?
1.97E+13,1965.10.30,12:47:01 AM,39.1,23,greece,,,,,10,4.8,4.6,4.6,4.8,4.6,4.7
strtok
,
qaxu7uf21#
使用函数strspn和strcspn代替strtok。这是一个演示程序。
strspn
strcspn
#include <stdio.h> #include <string.h> int main( void ) { const char *s = "1.97E+13, 1965.10.30, 12:47 : 01 AM, 39.1, 23, " "greece, , , , , 10, 4.8, 4.6, 4.6, 4.8, 4.6, 4.7"; const char *delin = ","; for (const char *p = s; *p; p += *p != '\0') { size_t n = strcspn( p, delin ); if (n == 0) { puts( "empty" ); } else { printf( "\"%.*s\"\n", ( int )n, p ); } p += n; } }
程序输出为
"1.97E+13" " 1965.10.30" " 12:47 : 01 AM" " 39.1" " 23" " greece" " " " " " " " " " 10" " 4.8" " 4.6" " 4.6" " 4.8" " 4.6" " 4.7"
1条答案
按热度按时间qaxu7uf21#
使用函数
strspn
和strcspn
代替strtok
。这是一个演示程序。
程序输出为