使用strtok和strchr拆分字符的C程序

使用strtok和strchr拆分字符的C程序,c,C,我有一个下面的C程序来分割字符* 它是一个用户输入的值,格式通常为111/222。代码生成正确的输出 在某些情况下,输入的值为/222 char* ptr ="/222" ; char* val1 , *val2; val1 = strchr( ptr, '/'); if ( val1 != NULL) val1++; val2 = strtok(ptr,"/"); 输出: val1=222 val2=222 我不知道该怎么走 val1=作为空字符

我有一个下面的C程序来分割字符*

它是一个用户输入的值,格式通常为111/222。代码生成正确的输出

在某些情况下,输入的值为/222

   char* ptr ="/222" ; 
   char* val1 , *val2;

   val1 = strchr( ptr, '/');
   if ( val1 != NULL)
     val1++;

   val2 = strtok(ptr,"/");
输出:

val1=222

val2=222

我不知道该怎么走

val1=作为空字符

val2=222


提前感谢您的帮助

最简单的方法是检查字符串是否以/开头。如果是,则将val1设置为,val2必须指向ptr+1。否则执行当前操作

显示的代码预计将崩溃。使用printf,我将输出为val1=222和val2=222,类似于/222的C字符串文本不可修改,但strtok修改其参数。所以你的代码片段有未定义的行为。当输入123/456时会产生什么输出?你能澄清一下你的问题吗?我不知道你到底在问什么。在代码中,val1将始终指向斜杠后面的参数,如果没有斜杠,则为null。你似乎期望结果是相反的。