有以下程序
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 char str[5]; 6 cin>>str; 7 cout<<str<<endl; 8 for(int i=0;i<5;i++) 9 cout<<str[i]<<" "; 10 return 0; 11 }
输入:
123456
输出:
123456
1 2 3 4 5
我的问题是:str只能储存5个字符,从程序第9行的输出结果看来也应是如此,为什么第7行输出会有6个字符?是因为缺少'\0'?望赐教。
用cin>>str的时候我输入20个数字也能运行……而且第一次输出长度是20,是不是因为cin>>str,以字节接收啊!!!
我把它换成scanf("%c",&a[i])的时候,前后的strlen(str)是一致的,可是不知道6哪儿去了,后面我自己定义的循环i值给20的话,都一样输出6,没有出现过5
1234567890
6
123457
1 2 3 4 5 7 6
这是输出结果。。。。。
char str[5];
for(int i=0;i<20;i++)
scanf("%c",&str[i]);
cout<<strlen(str)<<endl;
cout<<str<<endl;
for(int i=0;i<9;i++)
cout<<str[i]<<" ";
cout<<strlen(str)<<endl;
下标从0开始到5
是因为str是字符数组所以他的下标才由0到5吧?
C++和别的语言应该不一样,他的数组应该是多一位别的语言应该是下标从0到4他这是从0到5所以多一位。。。第九行只输出5个是你循环的问题,循环到五的时候因为i<5不满足,所以最后一位没有输出,你把5改成6试试
输入12345678,为什么str可以输出12345678呢?str能储存的数据的大小跟定义数组时设定的数组大小无关?是因为str是字符数组所以他的下标才由0到5吧?