在for循环中输入输出char型的字符串数组出现的问题

zengqingfu1442 2016-01-08 05:00:25
如下所示:
#include<iostream>
using namespace std;
int main(){
int n,m;char l[3];
cin>>n;
for(int i=0;i<n;i++){
cin>>l;
cout<<l<<endl;
}
return 0;
}
不能循环输入输出3个字符的字符数组,一输入3个字符的数组就结束了;
但是又有这种情况:


请问为什么啊?
...全文
694 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-01-25
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
苏叔叔 2016-01-24
  • 打赏
  • 举报
回复
可以在调试时,在return 0;处下断点。
苏叔叔 2016-01-24
  • 打赏
  • 举报
回复
你的声明char l[3]; 只有两个位置(除去结束符),当然不能输入2个以上长度的字符串。 解决方法: 可以给多一点空间 或不要超过预设空间大小。
zengqingfu1442 2016-01-23
  • 打赏
  • 举报
回复
zengqingfu1442 2016-01-23
  • 打赏
  • 举报
回复
我的意思是定义char[3],然后每次输入长度为3 的字符串是不行的,一输入长度为3的字符串程序就终止了。我现在已经明白了,必须定义长度大于3的字符串,谢谢你了。
paschen 2016-01-09
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
int main() {
	int n, m; char l[3];
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> l;
		cout << l << endl;
	}
	getchar();
	return 0;
}
zhouxiaofeng1021 2016-01-08
  • 打赏
  • 举报
回复
int main(){ int n,m;char l[3]; cin>>n; if (n > 3) { n =3; } for(int i=0;i<n;i++){ cin>>l[i]; cout<<l<<endl; } system("pause"); return 0; } 嘻嘻~~~ 我要分~~~

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧