(急)问个特别奇怪的关于输入的有关问题
(急)问个特别奇怪的关于输入的问题
以下为源代码:
int main()
{
char str[3]={};
cout < < "len= " < <strlen(str) < <endl;
for(int i=0;i <3;i++)
{
cin> > str[i];
}
cout < < "len= " < <strlen(str) < <endl;
if(strlen(str)> 5)
{
cout < < "ERR! " < <endl;
}
cout < < "outside " < <endl;
getch();
}
结果是
len=0
zxj
len=15
ERR!
outside
问为什么长度为15,这样造成条件语句总是成立
------解决方案--------------------
strlen(str)
---
strlen的参数一个包含结束符的字符串
你的字符数组只存了三个字符,并没有结束符。
所以strlen(str)是不确定的
以下为源代码:
int main()
{
char str[3]={};
cout < < "len= " < <strlen(str) < <endl;
for(int i=0;i <3;i++)
{
cin> > str[i];
}
cout < < "len= " < <strlen(str) < <endl;
if(strlen(str)> 5)
{
cout < < "ERR! " < <endl;
}
cout < < "outside " < <endl;
getch();
}
结果是
len=0
zxj
len=15
ERR!
outside
问为什么长度为15,这样造成条件语句总是成立
------解决方案--------------------
strlen(str)
---
strlen的参数一个包含结束符的字符串
你的字符数组只存了三个字符,并没有结束符。
所以strlen(str)是不确定的