字符串处理函数

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. java webServer(一)

    java webServer实现 浏览器和服务器使用的是http协议,http协议使用的是tcp 这里主要在服务器端监听端口号 实现功能 通过浏览器向服务器发送http请求:http://localh ...

  2. PHP+phpMyAdmin编程插入数据显示中文乱码的问题

    相信初学php的同学应该都会试一些小程序,比如从input文本框输入数据后点击提交,数据自动插入数据库保存. 但是如果是输入中文提交,不经过一定配置,在phpMyAdmin中就会显示乱码.什么%ez. ...

  3. PHP迭代器 Iterator

    Iterator是PHP自带的迭代器接口. 实现该接口的类必须实现该接口的方法,以便能够使用foreach进行输出迭代后的数据. interface Iterator extends Traversa ...

  4. WebSocket Demo

    HTML 代码: <body> <h1>WebScoket示例</h1> <br /><br /> <input type=" ...

  5. #include stdio.h(7)

    #include <stdio.h> int main() { //***********一.循环语句*************** //什么叫做循环: //重复的做某件事情,重复的执行一 ...

  6. JavaScript 获取数组的最大值和最小值

    js获取数组最大值和最小值 使用apply方法: var a = [1,2,3,5]; console.log(Math.max.apply(null, a));//最大值 console.log(M ...

  7. Seafile开源私有云自定义首页Logo图片

    Seafile是一个开源.专业.可靠的云存储平台:解决文件集中存储.共享和跨平台访问等问题,由北京海文互知网络有限公司开发,发布于2012年10月:除了一般网盘所提供的云存储以及共享功能外,Seafi ...

  8. 对类参数的序列化和反序列化XML

    /// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { #region 反序列化 /// < ...

  9. 类型构造器--高阶类型(构造器):Kind (type theory)--类型的元

    元类型(0阶类型):nullary type, data types 一元类型(一阶类型):unary  adj. [数] 一元的   二元类型: is the kind of a binary ty ...

  10. 97: Address family not supported by protocol,nginx服务启动失败

    1.启动nginx服务报错 环境:centos 6.9,yum安装的nginx,启动报错 [root@lnmp ~]# nginx -tnginx: the configuration file /e ...