c语言中strlen()包含/0吗

下面是道改错题,答案是把for( i = strlen( t ); i!=0; i-- ) 改为
for( i = strlen( t )-1; i!=0; i-- )
但书上说strlen()的长度不是不包含\0吗,为什么还要减一??
#include <stdio.h>
void fun( char t[] )
{
char c;
int i, j;
/**********found***********/
for( i = strlen( t ); i!=0; i-- )
for( j = 0; j < i; j++ )
if( t[j] > t[ j + 1 ] )
{
c = t[j];
t[j] = t[ j + 1 ];
t[j + 1 ] = c;
}
}
main()
{
char s[81];
printf( "\nPlease enter a character string: " );
gets( s );
printf( "\n\nBefore sorting:\n \"%s\"", s );
fun( s );
printf( "\nAfter sorting decendingly:\n \"%s\"", s );
}

第1个回答  2008-09-20
书上没有错

这里-1是因为数组的下标是从0开始的本回答被提问者采纳
第2个回答  2008-09-20
不包括

只需要比较n-1 次,所以要减去1
第3个回答  2012-03-13
不包含
相似回答