你好,关于strlen函数?

是说只能char[]数组类型或char指针类型,可以使用strlen函数求其长度?
如果是int型,例如:
int len[3];
len[0] = 1;
len[1] = 2;
printf("%s\n", strlen(len));
打印是0?
谢谢!

喵喵时光机
浏览 323回答 2
2回答

慕桂英3389331

首先要声明,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()函数的反回类型为unsignedint(无符号整型),因此再进行strlen(xx[i]-2的时候得到的是一个负数-2,而unsignedint是无法表示负数的,因此就被计算机转换为补码的形式来表示-2了,,也就是十进制数的4294967292,二进制形式是11111111110(具体多少个1自已算,反正前面全是1)你可以把strlen(xx[i])强制转换为int型来测试,比如(int)strlen(xx[i]-2这样的话就能得到正确结果了。
打开App,查看更多内容
随时随地看视频慕课网APP