strcpy strncpy memcpy 的用法与区别 2



#include <iostream>
#include <stdio.h>
void main()
{
 char *p = "he\0llo word";
 //char cm[20]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T'};
 char cm[20] ="ABCDEFGHIJKLMNOPQRS";
 //strncpy(cm,p,strlen(p));
 //memcpy(cm,p,strlen(p)+1);
 strcpy(cm,p);
 printf("The cm is %s",cm);
}

1)strcpy(cm,p)和  strncpy(cm,p,strlen(p)+1)  memcpy(cm,p,strlen(p)+1)输出的结果是he

2)strncpy(cm,p,strlen(p)) memcpy(cm,p,strlen(p))的输出结果是heCDEFGHIJKLMNOPQRS


当输入char cm[20]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T'}时,

1)strcpy的输出结果是he,strncpy(cm,p,strlen(p)+1) memcpy(cm,p,strlen(p)+1) 的输出是he

2)strncpy(cm,p,strlen(p))和memcpy(cm,p,strlen(p)) 的输出结果是heCDEFGHIJKLMNOPQRS烫烫烫


百度百科的例子:

#include<stdio.h>
#include<string.h>
int main()
{ char name[]={"Chinanet"},dest[20]={};

strncpy(dest,name,3);
//dest[3]='\0';//没有会乱码
printf("%s\n",dest);
}

去掉//dest[3]  = '\0';没有乱码打印啊,输出Chi,百科有误啊,呵呵。目行千行不如手敲一遍啊。



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char am[6] ={"hello"};
char bm[100] ={};
void  SetForwardInfo(const char *szTag,const char *szVal)
{
 //strcpy(am,szTag);
 //strcpy(bm,szVal);
 strncpy(am,szTag,2);
 strncpy(bm,szVal,strlen(szVal)+1);
 memcpy(cm,szValue,strlen(szValue)+1);
  
}
int main()
{
  SetForwardInfo("13800000000","13800000000\r\n\t",,"13800000000\r\n\t);
 printf("%s\n",am);
 printf("%s\n",bm);

printf("%s\n",cm);
   return 0;
}

输出:13llo

13800000000

13800000000


bm定义,char bm[6] = {};赋空都是代表'\0'啊。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值