具有较小目标数组大小的strcpy函数用法

时间:2014-09-15 14:58:07

标签: c

我正在执行这段代码。

#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个字节。

请帮助我这里发生了什么。

1 个答案:

答案 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;

}