是说只能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这样的话就能得到正确结果了。
添加回答
举报
0/150
提交
取消