strcpy和strncpy,strcpy和strncpy函数
关于c++ strncpy
char* ch = "12345678";
"12345678"后还有个空字符
而strncpy(ch5,ch,5);只copy了ch前5个字符,即12345,没有空字符
因为strncpy本身就是为了替换掉字符串中的某一串字符,只是前面的替换成了12345
当用cout输出时,遇到空字符结束
在输出ch5时数组后面的都不是空字符(未初始化),所以输出乱码·直到遇到空字符为止(位置未定)··
C++的strcpy()函数问题。
strncpy可以有三个参数,而strcpy只有两个参数
他们的用法:
strcpy:字串复制 原型:char *strcpy(char *dest, char *src);功能:把src所指由'\0'结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串strncpy:字串复制 原型:char * strncpy(char *dest, char *src, size_t n);功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。说明:如果n dest串长度,dest栈空间溢出产生崩溃异常。
strcpy用于unsigned char *出错
.............
strcopy的参数是char *
给你个函数吧
int StrCopyEx (void* pstFrom ,void* pstTo)
{
if (pstFrom == NULL || pstTo == NULL)
return -1 ;
unsigned char* pstF = (unsigned char*) pstFrom ;
unsigned char* pstT = (unsigned char*) pstTo ;
while (*pstT++ = *pstF++) ;
return 0 ;
}
当然memcopy才是王道
其实你这样就行了
#define STRCOPY(pstFrom ,pstTo) strcopy ((char*) (pstFrom) ,(char*) (pstTo))
以后用STRCOPY
C语言strcpy()函数问题
例如:
定义一个字符串char a[20],和一个字符串c[]="i am a teacher!";
把c复制到a中就可以这样用:strcpy(a,c);
这个函数包含在头文件 string.h中.
程序代码:
#includestring.h
#includeiostream.h
void main()
{char a[20],c[]="i am teacher!";
strcpy(a,c);
coutaendl;
}
C语言中的strcpy是什么使用的啊
(1)strcpy()
原型:char*strcpy(char*dest,const char*src);
功能:将src字符串的字符复制到dest中。
#include?stdio.h??
#include?string.h??
?
int?main()??
{??
???char?a[]?=?"abcdef";??
???char?b[10];??
?
???strcpy(b,a);???
?
???puts(b);??
?
???return?0;??
}
(2)strncpy()
原型:char*strncpy(char*dest,char*src,size_tnum);
功能:将src字符串的前num个字符复制到dest中。
#include?stdio.h??
#include?string.h??
??
int?main()??
{??
????char?a[]?=?"abcdef";??
????char?b[10];??
??
????strncpy(b,a,3);??
????b[3]?=?'\0';??//注意给个尾部??
??
????puts(b);??
??
????return?0;??
}
strncpy中的数组1可以是一个字符串常量吗?为什么strcpy的数组1不能是字符串常量呢
strcpy函数是把第二个参数的字符串写入第一个参数的变量中,既然是写入,就不能是常量了,常量的值是不能改变的