详解c语言程序,为什么strlen要减一

详解c语言程序,为什么strlen要减一fun函数功能是读入一个字符串,长度小于20,将该字符串中的所有字符按ASCLL码的值升序排序后输出

C语言数组下标是从0开始的,而strlen返回的是字符的个数,当你输入1个字符的时候,strlen返回的是1,而t[1]是'\0',你总不想在排序后,总把'\0'放在第一个吧,减1后指向最后一个字符会避免这种情况追问

但是strlen计算的长度不是不包括'\0'吗

而且j<i,不是j<=i

追答

j<i没错,但是当j=i-1的时候,下面的代码t[j+1]就相当于t[i]了,所以i得先减1让其指向最后一个字符而不是'\0'

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-09-23
这是一个下标的问题,初学语言的人很容易被迷惑。
我们平常生活中,习惯计数是从1开始数数,但在计算机世界中,是从0开始计数。
比方说,有10个苹果,给他们做编号,那么,现实世界中,是1,2,3,4,5,6,7,8,9,10,
而计算机世界中,则是0,1,2,3,4,5,6,7,8,9。
数组的第1个数的下标,始终是从0开始计数的,所以,长度是10,而使用下标的时候,则要减1追问

但是循环是条件是j<i

strlen函数 问题
因为你用的是数组,所以要减一,比如说strlen(s)=5,s[5]是从s[0]到s[4]就表示了5个数。你这里的函数应该还有个问题,while(i<=n)才可以

C语言问题;下面的程序中 if(str[strlen(str)-1]==' ') w--; 什么意思...
在c中,字符串结束是有个标记位的,就是'\\0',很明显,它不是空格,所以照循环的条件,这里单词数又加一了,其实后面已经没有单词了,所以用这个判断进行减一,

C语言问题;下面的程序中 if(str[strlen(str)-1]==' ') w--; 什么意思...
是用来判断如果第一个字符为空格,按照之前的循环,如果为空格,则会多加一个单词,故这里减一 if(str[strlen(str)-1]==' ')w--;在c中,字符串结束是有个标记位的,就是'\\0',很明显,它不是空格,所以照循环的条件,这里单词数又加一了,其实后面已经没有单词了,所以用这个判断进行减一...

strcmp比较字符串长度怎么老是输出-1;
如果你想用比较字符串长度的话,要用到 strlen 函数,这个函数返回字符串的字符个数,也就是字符串长度,你可以自己试试把strcmp函数重载一下。。让它具有你说的功能,或者自己设计一个函数来。。。strlen函数也在strcmp函数的头文件里 原型unsigned int strlen( const char *string ); (这是VC6...

c语言 strlen
strLen`的值会指向字符串的最后一个字符之后的位置,即多加了1。为了得到准确的字符串长度,我们需要在循环结束后对`strLen`进行调整。通过在循环结束后添加`strLen--`,我们可以回退一步,减去之前多加的那1。最终,`strLen`存储的值就是字符串`s`的实际长度,这个长度不包括字符串结束的0字符。

c语言里关于字母排序的问题,这里的j是什么意思?j = strlen(xx[i...
j = strlen(xx[i])-1;表示用一个strlen()函数(string length 字符长度)求出这个xx[i]数组的长度 然后减去1 最后的结果赋值给j. 一般用来求字符串长度.

c语言 for(i=strlen(s)-1;i>=0;i--) print("%c",*(s+i)); 怎么看不懂...
这段的意思就是将数组打印出来。估计你没转过弯来可能就是字符数组其实可以用字符串求长度的函数strlen来求出字符数组的长度,换个角度理解,你也可以看成连续的字符数组串联起来其实就是一个字符串嘛。。由于按位存放结果。。。所以要从后往前输出,,其实举个很简单的道理,随便给你一个两位数让你...

为什么我令j=strlen(c)时就没有输出,令j=strlen(c)-1是就有输出呢,j=...
第二个问题是c风格字符串,就是你用scanf输入进去的,c风格字符串标志字符串结尾的是一个全0的字符,就是二进制位全0的一个字符,如果用c语言编程可以写作'\\0',注意和'0'区别 这样问题就好解决了,你的程序似乎是将字符串头尾颠倒,也就是0和4的位置颠倒,1和3的位置颠倒对吧,但是j=strlen()...

C语言问题;下面的程序中 if(str[strlen(str)-1]==' ') w--; 什么意思...
if(str[strlen(str)-1]=='')w--;就是说如果str字符串的最后一个字符是空格,就w--;

c语言中p2=str+strlen(str)-1是什么意思
strlen(str)-1是求出字符串str的长度再-1,其值就将长度变成了下标值;str+strlen(str)-1就求出了字符串数组最后一个有效位('\\0'前面的那个)的地址;p2=str+strlen(str)-1就是把这最后一位的地址(指针)赋给指针p2。换句话说,就是让指针p2指向字符串str的最后一个有效字符。

相似回答