#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'啊。