【发布时间】:2012-08-06 15:10:38
【问题描述】:
在使用字符串操作函数时,特别是 strcpy 我做了这个小程序。
char s1[8]="Hellopo";
char s2[4]="sup";
strcpy(s1,s2);
cout<<s1<<endl;
当我打印出 s1 它实际上只是打印出“sup”。我希望它打印“suplopo”。
然后我这样做了:
cout<<s1+4 << endl;
它打印出“opo”;
而这个输出:cout<<s1+3<<endl; 什么都没有
所以在考虑了一下之后。
我得出了这个结论。由于 C++ 一旦到达空终止符就停止输出字符串。因此 null 必须已复制到 strcpy 函数中。产生这个字符串:
s - u - p - \0 - o - p - o -\0;
请告诉我这是否正确。如果我不是,请纠正我。
如果您有更多信息要提供,请提供。
【问题讨论】:
-
对我来说很合适。你的测试似乎证明了这一点。虽然调试器会向您显示 char 数组的每个字节中的内容。
-
strcpy() 函数将 src 指向的字符串,包括终止的空字节 ('\0') 复制到 dest 指向的缓冲区中。字符串不能重叠,并且目标字符串 dest 必须足够大以接收副本。 linux.die.net/man/3/strcpy