请教一下C语言的小小小问题,呵呵!

来源:百度知道 编辑:UC知道 时间:2024/06/09 22:56:13
这是C程序设计语言(第2版-新版)中的例子!
#include "stdio.h"
main()
{
int c,i;
char s[100];
for(i=0;(c=getchar())!=EOF;i++)
s[i]=c;
printf("%d\n",trim(s));
printf("%s",s);
}
int trim(char s[])
{
int n;
for(n=strlen(s)-1;n>=0;n--)
if(s[n]!=' '&&s[n]!='\t'&&s[n]!='\n')
break;
s[n+1]='\0';
return n;
}
这个程序运行,如果输入abc,那这个函数执行完会n不是应该是-1吗?为什么我运行得到的是2呢,还有就是数组s不是应该只有一个结束符吗?为什么得到的还是abc呢?

请网友帮忙解释一下吧。谢谢

int trim(char s[])
{
int n;
for(n=strlen(s)-1;n>=0;n--)
if(s[n]!=' '&&s[n]!='\t'&&s[n]!='\n') //第一次的时候取s[2]也就是‘c’,他满足这个条件所以跳出,此时n为2
break;
s[n+1]='\0';
return n;
}

strlen 检测字符的字符数! 但是它见到"\0"就返回了 而且\0这个 字符是不计数的! 所以3-1等于2