我有这个代码..
#include <stdio.h>
#include <string.h>
int main() {
char a[6]="Hello";
char b[]="this is mine";
strcpy(a,b);
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(b));
printf("%s\n",a);
printf("%s\n",b);
printf("%d\n",sizeof(a));
return 0;
}
6
13
this is mine
this is mine
6
我想问,即使我将较大的strng复制到a
,但它的大小没有改变,但它的内容却改变了,为什么?
任何帮助将不胜感激..
最佳答案
您无法更改数组 A 的大小。strcpy 的速度非常快,因此它假设您(用户)传递一个足够大的数组来容纳复制的字符串。您所做的就是覆盖数组 a 的空终止符,并将内存更改为超出您分配的位置。在许多情况下,这不会起作用并导致程序崩溃,但在一个简单的示例中,它会运行。
关于C strcpy 是如何工作的,它会改变原始字符串的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31063437/