使用strtok和strchr拆分字符的C程序
我有一个下面的C程序来分割字符* 它是一个用户输入的值,格式通常为111/222。代码生成正确的输出 在某些情况下,输入的值为/222使用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=作为空字符
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。你似乎期望结果是相反的。