Moh*_*bil 6 c++ character-arrays
现在让我们看看这个小程序
char s[20]="One";
strcat(s,"Two");
cout<<s<<endl;
Run Code Online (Sandbox Code Playgroud)
这里首先s的值为"One",对于直观表示,这是s的值:
O - n - e - \0
然后我在字符串的末尾添加"Two",产生这个:
O - n - e - T - w - o - \0
现在你可以看到字符串中唯一的空值是在"One"之后,现在是在"OneTwo"之后
我的问题是:null是否被字符串"Two"覆盖,然后它在结尾处添加了它自己的null.
或者在开始时已经存在的空值又回到了最后?
(这个问题似乎没有什么区别,但我想知道我学到的一切)
谢谢
尽管这个问题已经被多次正确回答,但从源\xe2\x84\xa2 获得最官方的答案可能会很好。或者至少从我可以通过谷歌找到的来源。
\n\n这份文件声称是 C++ 标准(或其工作草案),内容如下:
\n\n\n\n\nC++ 标准库提供了 C\n 库中的 209 个标准函数 [包括 strcat]。\n --“标准 C 库”,C.2.7,第 811 页
\n
跳转到这份自称是 C 国际标准的文档,我们看到:
\n\n\n\n\n该
\n\nstrcat函数将 \n 指向的字符串的副本s2(包括终止空字符)附加到 指向的字符串\n 的末尾s1。的初始字符s2覆盖 末尾的 null\n 字符s1。如果复制发生在重叠的对象之间,则行为未定义。--“
\nstrcat函数”,7.21.3.1,第 327 页
strcat 确实会覆盖空字符。
\n| 归档时间: |
|
| 查看次数: |
3982 次 |
| 最近记录: |