字符串处理函数

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. Chrome拷贝插件的对比 zeroclipboard和clipboard插件

    1.zeroclipboard插件 实现原理:Zero Clipboard 利用 Flash 进行复制,用了一个透明的 Flash ,让其漂浮在按钮之上,这样其实点击的不是按钮而是 Flash ,也就 ...

  2. If you want the rainbow, you have to deal with the rain.

    If you want the rainbow, you have to deal with the rain.想要彩虹,就先忍受雨水.

  3. iOS开发之Objective-c的AES256加密和解密算法的实现

    原文:http://www.lidaren.com/archives/1470 高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法. 以下实现 ...

  4. appium(二)简单的demo

     转自http://blog.csdn.net/Yejianyun1/article/details/55517418     启动appium服务,连接手机,将测试用例demo存放到.py文件中 # ...

  5. 笨办法学Python(二十四)

    习题 24: 更多练习 你离这本书第一部分的结尾已经不远了,你应该已经具备了足够的 Python 基础知识,可以继续学习一些编程的原理了,但你应该做更多的练习.这个练习的内容比较长,它的目的是锻炼你的 ...

  6. 笨办法学Python(五)

    习题 5: 更多的变量和打印 我们现在要键入更多的变量并且把它们打印出来.这次我们将使用一个叫“格式化字符串(format string)”的东西. 每一次你使用 " 把一些文本引用起来,你 ...

  7. vue中动画的封装

    <style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-active,.v-leave-active{ transition:opacit ...

  8. C sharp #003# 面向对象编程基本构件

    饮水思源:金老师的自学网站 索引 类的属性 简化字段/属性的初始化 命名空间 程序集 类的属性 字段+get/set方法=属性 (之前都是把字段和属性混着用..) 经典写法: using System ...

  9. python 下实现window 截图

    首先安装PIL库,因为PIL官网没有支持python3.6的PIL库我想在3.X中实现,因此使用pip安装pillow pip install pillow 安装 安装完成后,from PIL imp ...

  10. 机器学习实战之Logistic回归

    Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. ...