C语言-这个程序怎么理解,!str2[j]是什么意思?还有下面一步,j=0;i++;怎么用?ret
C语言-这个程序怎么理解,!str2[j]是什么意思?还有下面一步,j=0;i++;怎么用?return-1是什么?...
C语言-这个程序怎么理解,!str2[j]是什么意思?还有下面一步,j=0;i++;怎么用?return -1是什么?
展开
3个回答
展开全部
这应该是个查找函数
在str1中查找是否有str2字符串。
从str1的第一位开始查找起,比较str2的第一位是否相同,如果相同,两个字符串同时向后移位,再比较下一个。如果一直到str2字符串结束时全都相同,则说明str1中含有str2字符串,则返回0,表示查找成功
若一直到str1的结尾,都不含str2字符串,则返回-1表示查找失败
str2[i]表示str2字符串中的一个字符,当str2未到结尾时,!str2[i]值为0,则不执行if,到结尾时为1,也表执行到str2的结尾了,不懂可以再问哦
在str1中查找是否有str2字符串。
从str1的第一位开始查找起,比较str2的第一位是否相同,如果相同,两个字符串同时向后移位,再比较下一个。如果一直到str2字符串结束时全都相同,则说明str1中含有str2字符串,则返回0,表示查找成功
若一直到str1的结尾,都不含str2字符串,则返回-1表示查找失败
str2[i]表示str2字符串中的一个字符,当str2未到结尾时,!str2[i]值为0,则不执行if,到结尾时为1,也表执行到str2的结尾了,不懂可以再问哦
更多追问追答
追问
外层循环没有明白,内层循环应该就可以比较完成两个字符串是否相同
追答
假如str1字符串为abcdabde
str2为abd
从str1的第一个字母a开始比较,第一个相同,则同时向后移位,就比较各自第二个,还是相同,则同时再向后移位,比较第三个,这时候第三个不相同。
则str2又重新移到a
str1移到b(这是外循环)
这时候从str1的第二位开始比较起,第一位不同,则str2回到第一位,str1向后移位
这时候从str1的第三位比较起,即从c开始比较
这样依次类推,
如果一直到最后一位还没有相同的
就返回-1表示查找失败
有相同的则就停止,返回0
展开全部
!str[2]是当str[2]数值等于0为假,不等于0时逻辑值为1时,前面加上!是逻辑非,表示相反
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
解析为:如果str2[]的第j个元素不为0,就返回0,然后把0赋给j,i自增加1,如果不满足while(str1[i])的条件,函数就返回-1这个值
追答
解析为:如果str2[]的第j个元素为0,就返回0,然后把0赋给j,i自增加1,如果不满足while(str1[i])的条件,函数就返回-1这个值
第一条写错了点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询