好的地产设计网站,优化关键词是什么意思,局域网电脑做网站,网站建设原因strtok函数的作用为以指定字符分割字符串#xff0c;含有两个参数#xff0c;第一个函数为待分割的字符串或者空指针NULL#xff0c;第二个参数为分割字符集。 对一个字符串首次使用strtok时第一个参数应该是待分割字符串#xff0c;strtok以指定字符完成第一次分割后…strtok函数的作用为以指定字符分割字符串含有两个参数第一个函数为待分割的字符串或者空指针NULL第二个参数为分割字符集。 对一个字符串首次使用strtok时第一个参数应该是待分割字符串strtok以指定字符完成第一次分割后会把第一个分割字符改为\0标记该位置的\0并返回本次分割的起始地址
char arr[] { keqingganyu.ayaka };//第一次调用strtok后变为keqing\0ganyu.ayaka
char* ret strtok(arr, .);
例如上述代码段strtok函数将该字符串分割后keqing后的将变成\0并且返回起始地址也就是k的地址 完成首次分割后strtok的第一个参数应该为空指针NULL它的含义其实就是上次使用strtok后标记的那个\0的地址由此可以推断出strtok函数在实现时应该用到了static静态变量因此具有记忆功能 ret strtok(NULL, .);//第二次调用arr内容变为keqing\0ganyu\0ayaka如果继续第三次调用显然strtok是找不到指定的分割字符了但是会遇到该字符串末尾自带的\0此时仍返回起始地址是子串的起始地址而非整串的首地址但下一次再调用时由于确认已经不存在指定分割字符则将返回空指针NULL 总结
①首次调用strtok第一个参数为待分割字符串之后都为空指针NULL第二个参数始终为指定分割字符。
②strtok遇到指定分割字符时改其为\0并返回子串起始地址首次遇到\0直接返回子串起始地址此后下一次再调用返回空指针NULL
③由于strtok会直接改变待分割字符串的内容通常再使用前先copy一份可修改的备份来分割 下面是程序中可能使用strtok的场景一般借助循环完成
#includestdio.h
#includestring.h
int main()
{char* str keqingganyu.ayaka;//原字符串不可修改或不希望被修改char arr[50] { 0 };strcpy(arr, str);//copy一份可修改char* ret NULL;//循环初值为strtok首次分割循环条件为strtok返回值不为NULL循环增量为strtok再次分割for (ret strtok(arr, .); ret ! NULL; ret strtok(NULL, .)) {printf(%s\n, ret);}return 0;
}