我正在执行这段代码。
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="himanshusaini";
char str2[5];
strcpy(str2,str1);
printf("str1=%s\n str2=%s\n",str1,str2);
return;
}
=========== 输出
STR1 = shusaini STR2 = himanshusaini
strcpy如何在这里工作,为什么str1被修改而str1是源字符串,而str2是目的地。另一方面,str2的输出是完整的源字符串,而str2的大小只有5个字节。
请帮助我这里发生了什么。
答案 0 :(得分:-1)
当我执行此代码时,结果如下:
STR1 = himanshusaini STR2 = himanshusaini
str1没有像你说的那样改变,但str2 = himanshusaini的原因,因为char * strcpy(char * dest,const char * src)
dest - 这是指向要复制内容的目标数组的指针。
src - 这是要复制的字符串。
返回值 这将返回指向目标字符串dest。
的指针因此你有一个指向整个字符串的指针,它将由特殊的字符串终止&#39; \ 0&#39;
仅复制前5个char使用stncpy
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="himanshusaini";
char str2[6];
strncpy(str2,str1,5);
str2[5] = '\0'; /* null character manually added */
printf("str1=%s\n str2=%s\n",str1,str2);
return 0;
}