首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

strcpy()函数解决方案

2012-04-05 
strcpy()函数我查看了strcpy()函数原型 char*_Cdecl strcpy(char *dest, const char *src)我看一本书上说

strcpy()函数
我查看了strcpy()函数原型 char*_Cdecl strcpy(char *dest, const char *src);
我看一本书上说 它可以这么用strcpy(s1,"nihao",2)作用是把ni拷贝到s1 中
但是这个函数的原型中只有两个参数 

还有就是我编译的时候 就提示说错误了

不知道是编译器的问题 还是这个函数就不能这么用的问题  
谢谢
非常感谢


[解决办法]
是:
char * strncpy(char *s1,char *s2,size_t n);

C/C++ code
char * strncpy(char *s1,char *s2,size_t n);将字符串s2中最多n个字符复制到字符数组s1中,返回s1的值。注意:如果源串长度大于n,则strncpy不复制最后的'\0'结束符,所以是不安全的,复制完后需要手动添加字符串的结束符才行。Strcpy和Strncpy的区别- - 第一种情况: char* p="how are you ?"; char name[20]="ABCDEFGHIJKLMNOPQRS"; strcpy(name,p); //name改变为"how are you ? "====>正确! strncpy(name,p,sizeof(name)); //name改变为"how are you ? " ====>正确! 第二种情况: char* p="how are you ?"; char name[10]; strcpy(name,p); //目标串长度小于源串,错误! name[sizeof(name)-1]='\0'; //和上一步组合,弥补结果,但是这种做法并不可取,因为上一步出错处理方式并不确定strncpy(name,p,sizeof(name)); //源串长度大于指定拷贝的长度sizeof(name),注意在这种情况下不会自动在目标串后面加'\0' name[sizeof(name)-1]='\0'; //和上一步组合,弥补结果================================================ 总结:strcpy 源字串全部拷贝到目标字串中,包括'\0',但是程序员必须保证目标串长度足够,且不与源串重叠。strncpy 如果目标长>=指定长>源长,则将源串全部拷贝到目标串,连同'\0' 如果指定长<源长,则将截取源串中按指定长度拷贝到目标字符串,不包括'\0' 如果指定长>目标长,错误!
[解决办法]
探讨
是:
char * strncpy(char *s1,char *s2,size_t n);

热点排行