字符串处理函数

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是不安全的,因为它是以'\0'作为拷贝的结束符,并没有规定拷贝的大小,因此会造成内存泄漏.
    所以后来在 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[]; strncpy(dest,src,strlen(src)); //将src里面的字符串拷贝到dest,strlen将记录不包括'\0'的字符串实际长度,因此在结尾手动补零
dest[strlen(src)]=; //在字符串后面补0
printf("i am src: %s\n",src);  //hello strncpy
printf("i am dest: %s\n",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[]={"hello,"}; strncat(buf,str1,strlen(str1)); printf("%s\n",buf); //hello,strcast }
-------------------------------------------------------

C语言字符篇(二)字符串处理函数的更多相关文章

  1. c语言字符数组与字符串的使用详解

    转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...

  2. C语言字符数组和字符串

    用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ' ', 'p', 'r', 'o' ...

  3. C语言中常用的字符串处理函数总结

    C语言中字符串处理函数备注 此文仅用于自己研究和记录 字符串处理函数 1. char *gets(char *s); #include<stdio.h> 功能: 从标准输入读入字符,并保存 ...

  4. Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

    怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那 ...

  5. C语言中常用的字符串操作函数

    程序开头要声明 #include <string.h> 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char ...

  6. C语言基础 (8) 常用字符串处理函数

    复习 如何调用库函数(别人写好的函数) 1)       头文件:包含指定的头文件,头文件主要包含此函数的声明 2)       函数名字:函数名字必须和头文件声明的名字一样 字符串常用处理函数: 1 ...

  7. C语言字符篇(一)字符串转换函数

      #include <stdlib.h>   double atof(const char *nptr);  将字符串转换成双精度浮点数 int atoi(const char *npt ...

  8. C语言字符篇(四)字符串查找函数

      #include <string.h>   char *strchr(const char *s, int c);   The strchr() function returns a ...

  9. C语言字符篇(三)字符串比较函数

    #include <string.h>   int strcmp(const char *s1, const char *s2); 比较字符串s1和s2 int strncmp(const ...

随机推荐

  1. poj 1987 节点距离小于等于K(树DP)

    这题和poj 1741是一模一样的 但是1741能AC的代码,在这里却是TLE,暂时没看出哪里出现了问题.. AC代码: #include <iostream> #include < ...

  2. Hibernate课程 初探一对多映射4-1 inverse属性

    1 <Set>节点的inverse属性默认由one方来维护(默认值为false).将inverse属性修改为true则由多方来维护.

  3. CSS如何居中元素

    How to center in CSS 一步步拆解你的需求,是水平居中还是垂直居中?还是水平垂直居中?父容器是inline还是block,高度知不知,宽度造不造?一个子元素还是多个子元素?一行还是多 ...

  4. 一道Java集合框架题

    问题:某班30个学生的学号为20070301-20070330,全部选修了Java程序设计课程,给出所有同学的成绩(可用随机数产生,范围60-100),请编写程序将本班各位同学的成绩按照从低到高排序打 ...

  5. <Android 基础(九)> Ndk配置与Demo

    介绍 The NDK is a toolset that allows you to implement parts of your app using native-code languages s ...

  6. Android 极光推送JPush---自定义提示音

    极光推送提供三种方法实现Notification通知 三方开发平台发送普通消息,客户端设置PushNotificationBuilder,实现基础的Notification通知 三方开放平台发送普通消 ...

  7. 关于 Android Studio 如何连接手机调试

    第一步:设置-> 打开开发者选项,以及USB调试模式 第二步:关于手机->版本号,点击版本号会弹出提示:已经处于开发者模式,无需操作 第三步:设置->在搜索框中输入HDB,此时会弹出 ...

  8. SQL Union和Union All使用方法

    格式: [SQL 语句 1]UNION [SQL 语句 2] 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: select ID,NAME from A UNION select I ...

  9. django rest framework 详解

    Django REST framework 是用于构建Web API 的强大而灵活的工具包. 我们可能想使用REST框架的一些原因: Web浏览API对于开发人员来说是一个巨大的可用性. 认证策略包括 ...

  10. 悟空crm-0.5.4 (OpenLogic CentOS7.2)

    平台: CentOS 类型: 虚拟机镜像 软件包: 5kcrm0.5.4 centos7.2 lamp stack 5.6.22 commercial crm lamp 服务优惠价: 按服务商许可协议 ...