【发布时间】:2012-01-16 02:38:09
【问题描述】:
我必须通过“换行”或“换行”字符(dec 10,十六进制 0x0A)来拆分网络数据的负载。 所以我尝试使用我遇到了几个问题的 strtok() 函数 当我想用“换行”字符制作一个 const char 字符串时。
原型:
`strtok(char * StringToSplit, const char * Delimiters)`
这造成了一个无效的初始化程序:
`const char delim[] = 10;`
这给出了关于在不强制转换的情况下从 int 生成指针的警告;
虽然printf("Delim: %x", delim)
显示正确的 delim 值 (0xa) 在 strtok() 中使用时应用程序崩溃。
`const char * delim = 10;`
没有警告或错误,printf("Delim: %x", delim) 给出了正确的值 但是 strtok() 没有工作(不过正如我所料)。
`char delim = 10;` `(ofc strtok(..., &delim))`
这似乎完成了这项工作,但我仍然收到关于传递非 const char ptr 的警告,其中 const char ptr 应该传递给 strtok() 函数。
`char delim[] = "#";` `delim[0] = 10;`
最后这似乎可以在没有警告的情况下工作。
`char tmp[] = "#";` `tmp[0] = 10;` `const char *delim = tmp;`
问题是,将这种不可见字符传递给 strtok() 函数的最简单和最优雅的方法是什么? 对我来说,感觉这只是一堆杂乱无章的代码。
【问题讨论】:
标签: string split newline strtok