自定义str分割vs strtok



strtok函数对我来说似乎很奇怪,尽管我不确定这是因为我是C语言的初学者,还是因为它实际上被认为是经验丰富的程序员的奇怪之处。下面是我目前分割字符串的操作:

char *str = "first,last,agentom,smith,20nsarah,jones,30";
char row_buffer[80];
char c;
int str_i = 0, buf_i = 0;
do {
c = str[str_i];
if (c != 'n')
row_buffer[buf_i++] = c;
else {
row_buffer[buf_i] = '';
buf_i = 0;
// process_function()
}
} while (str[str_i++]);

对于在C中分割字符串来说,这似乎是过度的,或者这与它的完成方式相似吗?

你的建议并不过分,它实际上是一个比strtok()更好的分割字符串的方法,因为它不修改源字符串。

请注意以下注释:

  • 不测试字符串片段是否适合临时缓冲区
  • 的语义与strtok()略有不同:连续分隔符产生空片段,空字符串产生空片段。例如,"nn"产生3个片段,而strtok()不产生。

最新更新