首页 新闻 搜索 专区 学院

利用字符数组储存字符串

0
悬赏园豆:10 [已解决问题] 解决于 2012-07-31 09:33

有以下程序

 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'?望赐教。

c++
铁树银花的主页 铁树银花 | 初学一级 | 园豆:178
提问于:2012-07-28 09:56
< >
分享
最佳答案
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;

 

收获园豆:5
月星汐 | 菜鸟二级 |园豆:207 | 2012-07-29 07:43
其他回答(2)
0

下标从0开始到5

收获园豆:2
悟行 | 园豆:12422 (专家六级) | 2012-07-28 10:19

是因为str是字符数组所以他的下标才由0到5吧?

支持(0) 反对(0) 铁树银花 | 园豆:178 (初学一级) | 2012-07-28 17:45
0

C++和别的语言应该不一样,他的数组应该是多一位别的语言应该是下标从0到4他这是从0到5所以多一位。。。第九行只输出5个是你循环的问题,循环到五的时候因为i<5不满足,所以最后一位没有输出,你把5改成6试试

收获园豆:3
羽商宫 | 园豆:2490 (老鸟四级) | 2012-07-28 11:58

输入12345678,为什么str可以输出12345678呢?str能储存的数据的大小跟定义数组时设定的数组大小无关?是因为str是字符数组所以他的下标才由0到5吧?

支持(0) 反对(0) 铁树银花 | 园豆:178 (初学一级) | 2012-07-28 17:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册