第5章 C语言的字符串函数strcat与strcpy (七)

发布于:2023-01-04 ⋅ 阅读:(290) ⋅ 点赞:(0)

文档视频讲解链接地址

  1. 腾讯课堂链接 : 46_数组_字符函数strcat与strcpy

5.7 字符串函数strcat,strcpy,strncpy

  1. strcat函数- 字符串拼接函数

    • 格式:strcat(字符数组1,字符数组2)
    • 功能:把字符数组2连到字符数组1后面
    • 返回值:返回字符数组1的首地址
    • 说明:
      • 字符数组1必须足够大 。
      • 连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消, 新串最后加‘\0’。
  2. strcat 函数拼接示意图
    01-c-72

  3. 实例60
    编程使用strcat函数实现两个字符串的拼接功能。

    • 源文件
    01-cbase\60-strcat.c
    
    • 源代码
    #include <stdio.h> 
    #include <string.h>
    
    int main(int argc, char const *argv[])
    {
        char str1[100]={0},str2[50]={0}; 
        printf("请输入第1个字符串 >:") ; 
        scanf("%s",str1);
        printf("请输入第2个字符串 >:");
        scanf("%s",str2);
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        strcat(str1,str2) ; // 把str2 接到str1的后面,形成一个新的字符串 (str1 + str2)
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        return 0;
    }
    
    
    • 运行结果
    请输入第1个字符串 >:hello 
    请输入第2个字符串 >:world
    str1=hello
    str2=world
    str1=helloworld
    str2=world
    
  4. 实例61

    编程使用自己的代码实现strcat函数实的拼接功能, 不能使用strcat函数。

    • 源文件
    01-cbase\61-mystrcat.c
    
    • 源代码
    #include <stdio.h> 
    #include <string.h>
    
    int main(int argc, char const *argv[])
    {
        char str1[100]={0},str2[50]={0}; 
        printf("请输入第1个字符串 >:") ; 
        scanf("%s",str1);
        printf("请输入第2个字符串 >:");
        scanf("%s",str2);
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        //strcat(str1,str2) ; // 把str2 接到str1的后面,形成一个新的字符串 (str1 + str2)
        // 先把 str1的下标定位到'\0'位置 
        int len = 0 ; 
        while(str1[len] != '\0') len ++; 
        printf("len = %d\n",len); 
        // len 就是'\0' 字符串结尾的下标 
    
        int i = 0 ; 
        #if 0 
        while(1)
        {
            str1[len]  = str2[i] ;  // str2中的'\0' 也要被复制过去 
            if(str1[len] == '\0'  )   // 说明str1[len]  == str2[i] 且str1[len] == '\0', 表示复制完成
                break ;  
            len ++ ; 
            i++ ; 
        }
        #endif 
    
        // 优化的实现 
        while((str1[len++]  = str2[i++]) != '\0' ) ;// str1[len] != '\0' 要继续复制, 等于'\0'结束循环 
    
    
    
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        return 0;
    }
    
    
    • 运行结果
    请输入第1个字符串 >:good
    请输入第2个字符串 >:bye
    str1=good
    str2=bye
    len = 4
    str1=goodbye
    str2=bye
    
  5. strcpy函数

    • 格式:strcpy(字符数组1,字符串2)
    • 功能:将字符串2,拷贝到字符数组1中去
    • 返值:返回字符数组1的首地址
    • 说明:
      • 字符数组1必须足够大
      • 拷贝时’\0’一同拷贝
      • 不能使用赋值语句为一个字符数组赋值
    • 例如:
      01-c-73
  6. strncpy函数

    • 格式
    char *strncpy(char *dest, const char *src, size_t n);
    
    

    功能: 把src 中的字符复制到dest 当中, 可以精确复制n个字节到dest当中

    返值:返回字符dest的首地址

    例如:

    strncpy(dest,src,10)  ; // 从src数组中复制10个元素到dest当中 
    
  7. 实例62
    编程使用strcpy函数实现两个字符串的复制功能。

    • 源文件
    01-cbase\62-strcpy.c
    
    • 源代码
    #include <stdio.h> 
    #include <string.h>
    
    int main(int argc, char const *argv[])
    {
        char str1[100]={0},str2[50]={0}; 
        printf("请输入第1个字符串 >:") ; 
        scanf("%s",str1);
        printf("请输入第2个字符串 >:");
        scanf("%s",str2);
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        strcpy(str1,str2) ; // 把str2 复制到str1 , str1 == str2 , '\0' 会被一同复制 
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        return 0;
    }
    
    
    • 运行结果
    请输入第1个字符串 >:goodbye
    请输入第2个字符串 >:helloworld
    str1=goodbye
    str2=helloworld
    str1=helloworld
    str2=helloworld
    
  8. 实例63

    编程使用自己的代码实现strpy函数实的复制功能, 不能使用strpy函数。

    • 源文件
    01-cbase\63-mystrcpy.c
    
    • 源代码
    #include <stdio.h> 
    #include <string.h> 
    
    int main(int argc, char const *argv[])
    {
        char str1[100]={0},str2[50]={0}; 
        printf("请输入第1个字符串 >:") ; 
        scanf("%s",str1);
        printf("请输入第2个字符串 >:");
        scanf("%s",str2);
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        //strcpy(str1,str2) ; // 把str2 复制到str1 , str1 == str2 , '\0' 会被一同复制 
        int i=0,j=0;
        #if 0 
        while(1)
        {
            str1[i] = str2[j] ; 
            if(str1[i] == '\0') break; 
            i++; 
            j++;
        }
        #endif 
        
        // str1[i]如果不等于'\0', 表示没有复制完成, while继续循环 
        // str1[i]如果  等于'\0', 表示复制完成 , while循环结束 
        while( (str1[i++] = str2[j++]) != '\0' )  ; 
    
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        return 0;
    }
    
    
    • 运行结果
    请输入第1个字符串 >:goodbye
    请输入第2个字符串 >:sorry
    str1=goodbye
    str2=sorry
    str1=sorry
    str2=sorry
    
  9. 实例64

    strncpy 可以复制精确的字节数

    • 源文件
    01-cbase\64-strncpy.c
    
    • 源代码
    #include <stdio.h> 
    #include <string.h> 
    
    int main(int argc, char const *argv[])
    {
        char str1[100]={0},str2[50]={0}; 
        printf("请输入第1个字符串 >:") ; 
        scanf("%s",str1);
        printf("请输入第2个字符串 >:");
        scanf("%s",str2);
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        strncpy(str1,str2,5) ; // 把str2 复制5个字符到str1中 
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        return 0;
    }
    
    
    • 运行结果
    请输入第1个字符串 >:goodbye
    请输入第2个字符串 >:helloworld
    str1=goodbye
    str2=helloworld
    str1=helloye
    str2=helloworld
    
本文含有隐藏内容,请 开通VIP 后查看