TC编译程序返回错误信息?!
程序如下:main()
{
char s[10]="hello";
char s1[10]="ok,see you";
clrscr();
printf("%d\n%d",strlen(s),strlen(s1));
}
输入竟然为
5
15
有没有人愿意解释一下啊?
[CODE]
int Strlen(char* str) /*一个简易版本*/
{
int n=0;
while(*str++)
n++;
return n;
}
[/CODE]
可见当遇到NULL才返回字符串的长度,不管是字符串本身的,还是越界遇到的
当然:更多的编译器不会迁就这种错误!不能执行
ok,see you长度为10啊,怎么会超越长度了呢?
况且我定义的为char s1[10]啊?
ok,see you长度为10啊,怎么会超越长度了呢?
况且我定义的为char s1[10]啊?
其实前面的仁兄可能和我一样也认为see前有一空格,楼上已有人写出了strlen的函数定义,自己仔细领略了.