CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

新手问题:关于c++中字符输入和输出问题

楼主lee110(lee)2006-02-01 22:20:03 在 C/C++ / C++ 语言 提问

1.char   a[4];  
      cin>>a;  
      cout<<a<<endl;  
    如果输入的字符数超过4个,程序可以回显出输入的字符,但程序会崩溃  
    例如输入了5个字符   程序可以正常的回显也不会崩溃   但如果输入了6个以上   可以回显出全部的字符但程序会崩溃。明明我定义了4个但程序怎么能显示全部的字符。请问这个是什么问题?  
  2.char   a[5]={'h','e','l','l','o'};  
      char   b[5]={'g','o','o','d','\0'};  
      cout<<a<<endl;  
      cout<<b<<endl;  
    程序可以正常的显示a和b的字符,但a数组中没有“\0”程序是怎么知道该到哪里结束呢  
  请各位给小弟解答一下啊  
  不胜感激啊 问题点数:20、回复次数:3Top

1 楼Cantonese00((⊙_⊙))回复于 2006-02-01 22:50:53 得分 0

1.偶在VC下运行的结果,例如输入了5个字符和6个字符以上   都   可以回显出全部的字符但程序会崩溃一个整数类型数组如下进行定义。  
   
  明明我定义了4个但程序怎么能显示全部的字符?//  
  偶理解到的一种是:如  
  int   a[]={1,2,3,4};    
  如果简单写成:  
  a;//数组的标识符名称  
  这将代表的是数组第一个元素的内存地址,a;就相当于&a[0],它的类型是数组元素类型的指针,在这里它的类型就是int*    
   
  char   a[4];  
  cin>>a;  
  cout<<a<<endl;  
  输入输出只管取得它的首地址就去干自己本分的事,至于a有没有数组越界是别一个管的。而a为数组元素类型,当然不得越界这个规定使得程序崩溃了(内存管理是个难题哎-_-!!!)    
  个人理解哎!!!   -_-!!!   希望看到更好的结果...  
   
  Top

2 楼Cantonese00((⊙_⊙))回复于 2006-02-01 23:03:02 得分 0

2.  
  char   a[]="Hello";  
  char   b[]="good\0";  
  cout<<a<<endl;  
  cout<<b<<endl;  
  这个不是越界问题,可以这样理解:  
  上面的数组a在内存中的实际存放情况为:   Hello\0  
  上面的数组b在内存中的实际存放情况为:     good\0\0  
  最后一个\0都是由C编译系统自动加上的Top

3 楼fireinsnow(喜欢蓝色)回复于 2006-02-01 23:04:45 得分 0

数组越界确实是个很讨厌很难搞的问题。  
   
   
  ====  
  朋友是一辈子的事……  
   
  Top

相关问题

  • C++中如何输出特殊字符
  • ASP.net(C#)输出"&"字符的问题
  • c或c++的输入输出问题
  • 请问如何输入,输出整数,字符,浮点数?
  • 问题:程序实现字符串的输入与输出
  • 关于字符输入输出和显示问题
  • 单字符输入和输出的问题
  • 高分求购md5简单实现 输入任意长度字符 输出128bit二进制(C实现)急(分不够可加)
  • C++是怎么输入输出的?
  • C#中文的输入、输出????

关键词

  • 问题
  • cout

得分解答快速导航

  • 帖主:lee110

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo