4
A
回答
9
在linux上有strsep。
的strsep()函数被引入 作为的strtok()的替代品,因为 后者不能处理空 字段。但是,strtok() 符合C89/C99,因此更便于携带。
6
您可以使用strchr
(仅限一个分隔符)或strcspn
(对于一组可能的分隔符)来查找下一个分隔符,处理该令牌,然后向前推送一个字符。做一个循环,你有你所需要的。
0
Drakosha给出了正确的答案。我想为两个变体添加一个示例。
随着strtok的:
char *token;
char *tmp_string;
char delimiter[10] = " |,.:";
strcpy (tmp_string, "1:2::4");
token = strtok(tmp_string, delimiter); // first token
while(token != NULL) {
i++;
printf ("i=%d\tToken: len(%d)\t%s", i, strlen(token), token);
// do something
token = strtok(NULL, delimiter); /* next token */
}
随着strsep(会识别 “”):
char *token;
char *tmp_string;
char delimiter[10] = " |,.";
strcpy (tmp_string, "1:2::4");
token = strsep(&tmp_string, delimiter); // first token
while(token != NULL) {
i++;
printf ("i=%d\tToken: len(%d)\t%s", i, strlen(token), token);
// do something
token = strsep(&tmp_string, delimiter); /* next token */
}
+0
'char * tmp_string;' 'strcpy(tmp_string,“1:2 :: 4”);' 将导致内存问题... – karelv 2016-09-19 12:28:46
相关问题
- 1. strtok的段错误
- 2. C - strtok和strcmp
- 3. strtok与空格分隔符
- 4. 构造,strtok,分段错误
- 5. Linq和排序空字段
- 6. strtok和strncat错误
- 7. strtok和strcpy错误
- 8. 解析字符串的strtok()
- 9. Strtok问题C(EOF字符?)
- 10. 读取文件和使用Strtok,一些字段读取成功,一些字段不
- 11. CURLOPT_POST字段空
- 12. Excel空字段
- 13. 的strtok给空字符串或东西我不知道
- 14. 使用strtok时获取空值[C]
- 15. strtok和内存泄漏
- 16. Java tokenizer,C++ tokenizer和strtok
- 17. strtok和int vs char char C
- 18. ICC编译器和strtok的
- 19. JSON中的空字段:空引号,空值或删除字段?
- 20. strtok()返回奇怪的值和段错误
- 21. 字段输出标签和字段输入之间的空格
- 22. Braintree v2托管字段卡空间和v3托管字段
- 23. SQL - 空或空字段
- 24. 斯卡拉,JPA和可空字段
- 25. Postgresql和一个空字段比较
- 26. Mysql查询忽略NULL和空字段
- 27. fgets()strtok()
- 28. kohana strtok
- 29. 非空字段在字中为空
- 30. jQuery的空字段添加字段
strsep()也是线程安全的(或可制成这种方式),其中的strtok()是非常非常。 – ceo 2010-03-04 18:37:10