为了账号安全,请及时绑定邮箱和手机立即绑定

你好,关于strlen函数?

你好,关于strlen函数?

喵喵时光机 2021-01-13 15:11:59
是说只能char[]数组类型或char指针类型,可以使用strlen函数求其长度?如果是int型,例如:int len[3];len[0] = 1;len[1] = 2;printf("%s\n", strlen(len));打印是0?谢谢!
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

首先要声明,strlen(xx[i])反回的值是0,因为你的xx还没有初值。你应该在readDat()的while循环中测试一下,是否读入了数据到xx数组中,在while中使用printf输出xx数组就知道了。应该是strlen反回0导至的错误。因为不了解你的那个dat文件中9近是什么内容,因此不好判断
程序主要错在第一个for语句for(j=1;j<(strlen(xx[i])-2);j=j+2)中的(strlen(xx[i])-2)这一句。
因为strlen()函数的反回类型为unsigned
int(无符号整型),因此再进行strlen(xx[i]-2的时候得到的是一个负数-2,而unsigned
int是无法表示负数的,因此就被计算机转换为补码的形式来表示-2了,,也就是十进制数的4294967292,二进制形式是11111111110(具体多少个1自已算,反正前面全是1)
你可以把strlen(xx[i])强制转换为int型来测试,比如(int)strlen(xx[i]-2这样的话就能得到正确结果了。

查看完整回答
反对 回复 2021-03-28
  • 2 回答
  • 0 关注
  • 322 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信