Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 常量字符*中的不可见字符作为strtok()分隔符_String_Split_Newline_Strtok - Fatal编程技术网

String 常量字符*中的不可见字符作为strtok()分隔符

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)给出了正确的值 但

我必须用“新行”或“换行”字符(12月10日,十六进制0x0A)分割网络数据的有效负载。 所以我尝试使用strtok()函数,但遇到了几个问题 当我想用“新行”字符创建一个常量字符字符串时

原型:

这使初始值设定项无效:

这给出了关于在不使用强制转换的情况下从int生成指针的警告; 尽管如此
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";