+ -
当前位置:首页 → 问答吧 → char到底可以存多少字符

char到底可以存多少字符

时间:2010-08-29

来源:互联网

  1. char buff[1];
  2.         cin>>buff;
  3.         cout<<sizeof(buff)<<"    "<<strlen(buff)<<"    "<<buff;
复制代码
测试输入aaaaaaaaaaaaaaaaaaaaaa
程序输出1    22    aaaaaaaaaaaaaaaaaaaaaa



为什么?

作者: xufinal   发布时间: 2010-08-29

1个

作者: prolj   发布时间: 2010-08-29

那为什么我程序运行出来可以存这么多。。。。

作者: xufinal   发布时间: 2010-08-29

环境是ubuntu 10.04
gcc version 4.4.3

作者: xufinal   发布时间: 2010-08-29

  1. char buf[1212] = {0};
  2. cout<<strlen(buf);
复制代码
你会发现char连一个字符都存放不了

作者: OwnWaterloo   发布时间: 2010-08-29



QUOTE:
那为什么我程序运行出来可以存这么多。。。。
xufinal 发表于 2010-08-29 09:38




    因为你强占了人家的地盘

作者: hellioncu   发布时间: 2010-08-29



QUOTE:
你会发现char连一个字符都存放不了
OwnWaterloo 发表于 2010-08-29 09:41




    测试了。可以存啊

作者: xufinal   发布时间: 2010-08-29

'\0'才是字符串的结尾

作者: efolzl   发布时间: 2010-08-29

char buff[1];
char fuckbuff[] = "fuckbuff";
        cin>>buff;
        cout<<sizeof(buff)<<"    "<<strlen(buff)<<"    "<<buff;

作者: prolj   发布时间: 2010-08-29

先检查有没有错误编译警告,错误,lz要学会分析

作者: wkq5325   发布时间: 2010-08-29

用结构体测了下,确实溢出了。用char真麻烦。。

作者: xufinal   发布时间: 2010-08-29

如果不介意那点速度的话, 直接用std::string好了, 省得麻烦。
如果介意:
  1. char buf[N];
  2. cin>>setw(N)>>buf;
复制代码

作者: OwnWaterloo   发布时间: 2010-08-29



QUOTE:
测试了。可以存啊
xufinal 发表于 2010-08-29 09:44



他是说你所谓的存只是求字符串长度的一个现象而已,如果你第一个char赋0了,长度就是0,strlen是按照0的位置来判定的,至于你前头为啥可以存很多,楼上几位说明了,因为你占了别人的地方

作者: daybreakcx   发布时间: 2010-08-29