strlen 函数

发布网友

我来回答

3个回答

热心网友

首先要声明,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这样的话就能得到正确结果了。

热心网友

能不能把源程序发给我啊,你发的程序不完整,这样不容易解释。

热心网友

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。

头文件:string.h

格式:strlen (字符数组名)。

功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内。

说明:返回s的长度,不包括结束符NULL。

相关函数:

TCHAR.H routine _UNICODE & _MBCS not defined_MBCS defined_UNICODE defined_tcslen

应用:        

#include<string.h>

#include<stdio.h>

int main(void)

{

    char*s="GoldenGlobalView";

    printf("%s has %d chars",s,strlen(s));

    getchar();

    return 0;

}


声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com