.|下面的代码中,*param++,哪个运算符先执行?

char buf[256] = “asr:256”; char param = NULL; if ((param = strchr(buf, ‘:’))) { param++ = ‘\0’; }

.|先执行param操作,再执行++操作。*++只有处于表达式的右边,优先级会被讲到最低。
.+

常用代码块

.|c中如何根据冒号分割字符串”asr:135”,分成两个部分?

.|
主要思路是:所在字符串位置的指针,然后存入\0,将其分割为两个部分。
然后分别用两个指针指向这两个部分即可。

include

include
int main(int argc, char argv[])
{
char buf[] = “asr:157”;
char
module = NULL;
char param = NULL;
if ((param = strchr(buf, ‘:’))) {
param++ = ‘\0’;
module = buf;
}

  1. printf("module: %s \n", module);<br /> printf("param: %s \n", param);<br />}

注意事项

.|为什么在函数中处理字符串的时候,都要先复制一份到本地,然后再处理?

.|因为该字符串是存储在堆栈中还是只读的静态存储区,你根本不知道。
为了不掉坑里,最好复制一份来进行操作。(一旦对静态存储区有了写入操作,就有了段错误!!!