当前位置: 代码迷 >> C语言 >> 关于字符串初始化问题
  详细解决方案

关于字符串初始化问题

热度:71   发布时间:2007-08-05 19:33:51.0
关于字符串初始化问题

int main()
{//问题1 这样初始化合法么?我在vc 6.0上编译报错,这个方法是在 c程序设计谭浩强著
//的 p141 所描述的初始化方式
char c[6]={'i','','a','m','','a'};
cout<<c;


//问题2 输入的字符可以超过新分配的空间么,cout函数如何判断字符串是否结束?
char *s;
s=new char[6];
cin>>s;
cout<<s;
delete s;
return 0;
}

搜索更多相关的解决方案: 字符  

----------------解决方案--------------------------------------------------------
以下是引用xieyuanchang在2007-8-5 19:33:51的发言:

int main()
{//问题1 这样初始化合法么?我在vc 6.0上编译报错,这个方法是在 c程序设计谭浩强著
//的 p141 所描述的初始化方式
char c[6]={'i','','a','m','','a'}; //这个地方,''里面最少要有个空格吧,' '
//而且,结束符'\0'也要有的吧
cout<<c;


//问题2 输入的字符可以超过新分配的空间么,cout函数如何判断字符串是否结束?
//答:不行,否则会出错
char *s;
s=new char[6];
cin>>s;
cout<<s;
delete s;
return 0;
}


----------------解决方案--------------------------------------------------------

如果是仅仅是字符数组,那么合法,但你的程序将它看做字符串,因此不合法(因为少了'\0')

输入字符可以超过新分配空间,不过可能会引起数据重叠等问题,导致内存数据错误,不建议使用.


----------------解决方案--------------------------------------------------------

谢谢呀,我明白了


----------------解决方案--------------------------------------------------------
cout&lt;&lt;c;要std::cout!!
----------------解决方案--------------------------------------------------------
  相关解决方案