请高手帮我!C++一个测试字符的长度,我找不到错误!

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:02:19
测试一串字符的长度
#include <iostream>
using namespace std;
int main()
{
int length(char *P);
int len;
char str1[20];
cout<<"intput one line"<<endl;
cin>>str1[20];
len=length(str1);
cout<<len<<endl;
return 0;
}
int length(char *p)
{
int n=0;
while(*p!='\0')
{n++;
p++;}
return (n);
}
我运行后无论我打什么字符进去,都是输出27,请高手帮我找出错误!

#include <iostream.h>//你头文件写错了
//using namespace std;

int length(char *P);//函数请放在main外面

int main()
{

int len;
char str1[20];

cout<<"intput one line"<<endl;
cin>>str1;//错在这里.因为str1[20]是对第21个元素复制.cin要求你给他一个指针,就是地址,所以你要给str1,不要去指定对某一个元素,那不是地址.
//你这句话会造成死机,程序崩溃,因为,你这里是申请了20个元素,却对第21个赋值,覆盖了别人的内容.会造成非常大的隐患,非常容易造成程序崩溃.切记,不要这么干了.

len=length(str1);
cout<<len<<endl;

return 0;
}
int length(char *p)
{
int n=0;
while(*p!='\0')
{
n++;
p++;
}
return (n);
}

#include <iostream>
using namespace std;
int main()
{
int length(char *P);
int len;
char str1[20];
cout<<"intput one line"<<endl;
cin>>str1; //去掉了[20]
len=length(str1);
cout<<len<<endl;
return 0;<