设为首页 加入收藏

TOP

字符串函数---strcpy()与strncpy()详解及实现
2015-07-20 17:32:18 来源: 作者: 【 】 浏览:2
Tags:字符串 函数 ---strcpy strncpy 详解 实现

一、strcpy()与strncpy()

strcpy():strcpy(dest,src); strcpy把src所指向以'\0'结尾的字符串复制到dest所指的数组中,返回指向dest的指针。

当sizeof(dest)>=sizeof(src)时,拷贝正确,并在dest字符串后面加入'\0';

当sizeof(dest)


strncpy():strncpy(dest,src,n); strncpy把src所指向以'\0'结尾的字符串的前n个字符复制到dest所指的数组中,返回指向dest的指针。

当n>=sizeof(src)时,拷贝正确,并在dest字符串后面加入'\0';

当n


示例代码:

#include
  
   
#include
   
     using namespace std; int main() { char a[]="lanzhihui is a good boy!"; //以下strcpy char b[30]; char c[30]; char d[30]; strcpy(b,a); //strcpy进行简单的拷贝,除了拷贝a数组的字符串外,还会将a数组后面的'\0'拷贝给数组b. cout<<"b:"<
    
     =sizeof(a) 时,正确拷贝,并在数组b字符串后加'\0'。 //当数组b的存储空间 sizeof(b)
     
      =sizeof(a) 时,正确拷贝, strncpy(g,a,10); //拷贝a中前9个字符到g中,必须手动为g数组加入'\0' g[9]='\0'; //n
       
       


\


举例理解strcpy()与strncpy()函数拷贝以 '\0' 结束:

#include
        
         
#include
         
           using namespace std; int main() { char s[]="lanzhihui\0 is a good boy!"; char name[30]; strcpy(name,s);//拷贝以'\0'结束 cout<
          
           
\

二、strcpy()与strncpy()实现

根据对strcpy()与strncpy()函数功能的测试,写出实现的代码:

#include
            
             
#include
             
               #include
              
                using namespace std; char *strcpy_m(char *dest,const char *str) { assert((dest!=NULL)&&(str!=NULL)); char *cp=dest; while((*cp++=*str++)!='\0') { // } return dest; } char *strncpy_m(char *dest,const char *str,int n) { assert((dest!=NULL)&&(str!=NULL)); char *cp=dest; while(n&&(*cp++=*str++)!='\0') { n--; } if(n) { while(--n) *cp++='\0'; } return dest; } int main() { char a[]="lanzhihui is a good boy!"; //以下strcpy_m char b[30]; char c[30]; char d[30]; strcpy_m(b,a); cout<<"b:"<
               
                \
                

可见自己写的strcpy_m()函数与strncpy_m()函数与库函数运行结果一样。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇二分图的最大匹配 (匈牙利算法) 下一篇HDU 1113 Word Amalgamation (ma..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)