求助!关于strlen获取指针变量中的个数

Guitarf 2017-01-06 12:32:20
如图 把for中的条件判断单独写没问题,不换就不行,后面的s++在地址上偏移,会影响strlen??
...全文
407 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
孙建飞的博客 2017-01-06
  • 打赏
  • 举报
回复
s++会导致字符串的首地址不断向后偏移,而你的字符串末尾‘\0’是不变的,这就导致的strlen(s)的长度不断变下,当偏移到原字符串一半长度以上时,这个for循环就结束了,也就意味着你原字符串后半部分的大写字母不会做转化。
小灸舞 版主 2017-01-06
  • 打赏
  • 举报
回复
引用 7楼我是你的主体 的回复:
[quote=引用 5 楼 xiaohuh421的回复:]估计楼主是没有明白strlen是做什么用的. strlen 按字面意思 str 就是字符串string的缩写 len就是长度length的缩写. 如它的字面意思一样, 它就是 求字符串长度的. 它是从你传的地址开始, 查找\0 也就是0作为结束, 它不会管你越不越界什么的. 反正就是从你给它的地址开始往后面找, 如果你的内存中每一个字节都不为0, 那么它就会告诉你字符串长度有几个G.
我一直以为strlen是求一个串长,仅仅想当然的求串的开始到结束,原来是从串的起始地址开始至'\0'结束 是这样吗?[/quote]
Guitarf 2017-01-06
  • 打赏
  • 举报
回复
引用 1 楼 ilovepdh的回复:
会影响的char* 字符串长度指的是当前指针位置起到\n结束符止,s++会导致指针偏移。
我以为都是从串头到串尾 蟹蟹你
Guitarf 2017-01-06
  • 打赏
  • 举报
回复
引用 6 楼 自信男孩的回复:

void inv (char *s)
{
    int i;

    for (i = 0; i < strlen(s); i++) {
        if (isupper(s[i]))
            s[i] += 32;
    }
}
记着加一下isupper()的头文件。
isupper是干嘛的 没学过。
Guitarf 2017-01-06
  • 打赏
  • 举报
回复
引用 5 楼 xiaohuh421的回复:
估计楼主是没有明白strlen是做什么用的. strlen 按字面意思 str 就是字符串string的缩写 len就是长度length的缩写. 如它的字面意思一样, 它就是 求字符串长度的. 它是从你传的地址开始, 查找\0 也就是0作为结束, 它不会管你越不越界什么的. 反正就是从你给它的地址开始往后面找, 如果你的内存中每一个字节都不为0, 那么它就会告诉你字符串长度有几个G.
我一直以为strlen是求一个串长,仅仅想当然的求串的开始到结束,原来是从串的起始地址开始至'\0'结束 是这样吗?
自信男孩 2017-01-06
  • 打赏
  • 举报
回复

void inv (char *s)
{
    int i;

    for (i = 0; i < strlen(s); i++) {
        if (isupper(s[i]))
            s[i] += 32;
    }
}
记着加一下isupper()的头文件。
xiaohuh421 2017-01-06
  • 打赏
  • 举报
回复
估计楼主是没有明白strlen是做什么用的. strlen 按字面意思 str 就是字符串string的缩写 len就是长度length的缩写. 如它的字面意思一样, 它就是 求字符串长度的. 它是从你传的地址开始, 查找\0 也就是0作为结束, 它不会管你越不越界什么的. 反正就是从你给它的地址开始往后面找, 如果你的内存中每一个字节都不为0, 那么它就会告诉你字符串长度有几个G.
自信男孩 2017-01-06
  • 打赏
  • 举报
回复
s++已经移动了字符串的位置,所以strlen的时候值会变化。
幻夢之葉 2017-01-06
  • 打赏
  • 举报
回复
假如不会移动,那你又怎么能*s给某个字符赋值呢
「已注销」 2017-01-06
  • 打赏
  • 举报
回复
strlen 只是计算从S指针开始到'\0'位置的字节数,你把S指针往后移那字节当然减少了,有什么问题?
ilovepdh 2017-01-06
  • 打赏
  • 举报
回复
会影响的char* 字符串长度指的是当前指针位置起到\n结束符止,s++会导致指针偏移。

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧