zoukankan      html  css  js  c++  java
  • C语言字符篇(二)字符串处理函数

    字符串处理函数

    1. 拷贝 strcpy
    2. 追加 strcat
     
    #include <string.h>  
    char *strcpy(char *dest, const char *src); 将字符串src 复制到字符数组 dest
    char *strncpy(char *dest, const char *src, size_t n); 将字符串src开始的 n个字节复制到字符数组dest

    char *strcat(char *dest, const char *src);

    将字符串src接在字符串数组dest的后面
    char *strncat(char *dest, const char *src, size_t n); 将字符串src开始的n个字符接在字符串数组的dest后面
     
    字符串拷贝有三要素:
    1.从哪里拷贝
    2.拷贝到哪里去
    3.拷贝多少空间?
        strcpy是不安全的,因为它是以''作为拷贝的结束符,并没有规定拷贝的大小,因此会造成内存泄漏.
        所以后来在 strcpy 的基础上,追加了strncpy
        strcpy是将一个字符串拷贝给另一个空间
        strncpy 是在此基础上规定拷贝字符串的大小.如果没有规定大小,将一个无线大的字符串拷贝给内存,将造成重要资料崩溃.

    解读:

    char *strncpy(char *dest, const char *src, size_t n);
    首先看参数:
    拷贝到那里去: char *dest 说明这是一个允许修改的字符串指针.也确实是这样.
    从哪里拷贝: const char *src 这是一个不允许修改的字符串指针,这样设计是合理的,我们不希望将一个字符串拷贝给另一个字符串后,原来的字符串给没了.所以const保护是正确的
    拷贝多少: size_t n xxx_t 是 typedef的标志,反正就是长度的意思,这个参数规定了要拷贝字符串的大小.

    然后看返回值:

    The strcat() and strncat() functions return a pointer to the resulting string dest.
    char *返回的是dest的指针.
     
     
    char *strncpy(char *dest, const char *src, size_t n);
    -------------------------------------------------------
                int main(int argc, char **argv) {
    
                    const char *src="hello strncpy";
    
                    char dest[100];
    
                    strncpy(dest,src,strlen(src));    //将src里面的字符串拷贝到dest,strlen将记录不包括''的字符串实际长度,因此在结尾手动补零
                    dest[strlen(src)]=0;    //在字符串后面补0
                    printf("i am src: %s
    ",src);  //hello strncpy
                    printf("i am dest: %s
    ",dest);  //hello strncpy
                }
    
    -------------------------------------------------------

     char *strncat(char *dest, const char *src, size_t n);

    -------------------------------------------------------
                int main(int argc, char **argv) {
                    const char *str1="strcat";
    
                    char buf[100]={"hello,"};
    
                    strncat(buf,str1,strlen(str1));
    
                    printf("%s
    ",buf);    //hello,strcast
    
                }
    -------------------------------------------------------
  • 相关阅读:
    黑马程序员JAVA高级视频_IO输入与输出18天2(FileWriter)
    黑马程序员JavaAPI17天5(集合转成数组)
    黑马程序员JAVA高级视频_IO输入与输出19天4(MyBufferedReader)
    android 取消webview的背景色
    DLNA
    Android JNI的若干问题总结
    gcc 一些应用
    如何基于nand flash启动Linux内核(分享一段实用、简单、类似bootloader功能的代码)
    Android JNI开发高级篇有关Android JNI开发中比较强大和有用的功能就是从JNI层创建、构造Java的类或执行Java层的方法获取属性等操作。 一、类的相关操作 1. jclass FindClass(JNIEnv *env, const char *name);
    ubuntu 配置ndk
  • 原文地址:https://www.cnblogs.com/kmist/p/10090686.html
Copyright © 2011-2022 走看看