String 常量字符*中的不可见字符作为strtok()分隔符
我必须用“新行”或“换行”字符(12月10日,十六进制0x0A)分割网络数据的有效负载。 所以我尝试使用strtok()函数,但遇到了几个问题 当我想用“新行”字符创建一个常量字符字符串时 原型: 这使初始值设定项无效: 这给出了关于在不使用强制转换的情况下从int生成指针的警告; 尽管如此String 常量字符*中的不可见字符作为strtok()分隔符,string,split,newline,strtok,String,Split,Newline,Strtok,我必须用“新行”或“换行”字符(12月10日,十六进制0x0A)分割网络数据的有效负载。 所以我尝试使用strtok()函数,但遇到了几个问题 当我想用“新行”字符创建一个常量字符字符串时 原型: 这使初始值设定项无效: 这给出了关于在不使用强制转换的情况下从int生成指针的警告; 尽管如此 printf(“Delim:%x”,Delim) 显示delim的正确值(0xa) 应用程序在strtok()中使用时崩溃 没有警告或错误,printf(“Delim:%x”,Delim)给出了正确的值 但
printf(“Delim:%x”,Delim)
显示delim的正确值(0xa)
应用程序在strtok()中使用时崩溃
没有警告或错误,printf(“Delim:%x”,Delim)给出了正确的值
但是strtok()没有起作用(不过,正如我所预料的那样)
这似乎起到了作用,但我仍然收到了一条关于传递非const char ptr的警告,其中const char ptr应该传递给strtok()函数
最后,这似乎在没有警告的情况下起作用
问题是,将这样一个不可见字符传递给strtok()函数的最简单、最优雅的方法是什么?
对我来说,这就像是一个乱七八糟的代码。它不是乱七八糟或不雅观的,只是有很多bug
const char delim[] = 10;
为什么在这里声明数组?这应该是:
const char delim = 10;
然后:
char delim[] = "#";
为什么要声明数组并将其设置为字符串?这应该是:
char delim = '#';
你需要:
const char *delim = "\n";
第二个参数必须是包含分隔符的C字符串。在你的各种化身中,有很多东西不是被错误地转换成C字符串的C字符串
`char tmp[] = "#";`
`tmp[0] = 10;`
`const char *delim = tmp;`
const char delim[] = 10;
const char delim = 10;
char delim[] = "#";
char delim = '#';
const char *delim = "\n";