编写代码单独取出字符串+hello+字符串的每个字符
1个回答
关注
展开全部
strtok调用中用NULL来代替s的原因就是防止p被重新赋值而指向s的起始地址,从而可以保证p可以指向s的其他位置,直到最后分割完整个字符串。
咨询记录 · 回答于2021-10-04
编写代码单独取出字符串+hello+字符串的每个字符
这个是什么编程哦
c还是c#
亲亲我给您写一个c语言的步骤哦
首先确定要提取的子字符串的长度,用指针指向该字符地址,这时需要判断剩余字符长度是否比len长,如果少于len则需让len等于n。这时就可以复制src字符串中的字符到dst中,最后由于要求dst末尾以NULL结尾,所以让其末尾为‘\0’。
strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。
当这两个语句编译后,编译器会将“abc”放在常量区中,而strtok(char *s, char *delim)函数是在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话就能体现指针和数组的区别:既然查找就要p++/b++。
strtok调用中用NULL来代替s的原因就是防止p被重新赋值而指向s的起始地址,从而可以保证p可以指向s的其他位置,直到最后分割完整个字符串。
但是如果用s来代替NULL,那么每次调用strtok时,p就会指向s的初始地址,从而只能获得第一个分割出来的字串其中 startpos 是起始字符的序号,length是[从 startpos 开始]取的字符串长度(包括startpos )。
如果找到指定的字符则返回该字符所在地址,否则返回 NULL。返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
亲亲可以帮到您吗