1、字符串的存储方式:

字符串在内存中,除了有效字符外,还会自动在后面补一个’\0’,作为字符串的结束标志。所以不能用sizeof来计算字符串中有效字符的个数,应该使用strlen,它在计算字符串大小时,遇到’\0’后就结束计数。

2.定义、初始化

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{char *str = "LiXiang";puts(str);//printf("%s",str);int len;len = sizeof(str)/sizeof(str[0]);printf("sizeof中:str的长度是:%d\n",len);//错误不能使用,字符串在内存中,除了有效字符外,还会自动在后面补一个'\0',作为字符串的结束标志。printf("strlen中:str的长度是:%d\n",strlen(str));char *pstr;   //定义一个字符类型的指针,当前为野指针,会出现段错误,非法内存访问pstr = (char *)malloc(128);//开辟一个空间,可能会失败,对返回值做判断if(pstr == NULL){printf("开辟空间失败\n");exit(-1);}memset(pstr,'\0',128);//对空间进行初始化,memset(对象,初始化成什么,多大);printf("请输入字符串:\n");gets(pstr);//scanf("%s",pstr);puts(pstr);return 0;
}

结果

LiXiang
sizeof中:str的长度是:8
strlen中:str的长度是:7
请输入字符串:
LiXiang
LiXiang

避免内存泄漏

现象:程序刚跑起来正常,一段时间后程序奔溃。
while(1){sleep(1);int *p = malloc(1024);//malloc申请的空间,程序不会自动释放,在linux中,程序结束后,系统会自动回收这个空间避免:1.注意,循环中有没有一直申请空间2.及时合理的释放  free(p);p = NULL;3.定义时,主动赋初值:int *p = NULL;
}

函数:strcpy、strncpy的使用

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{char *strDest;strDest = (char *)malloc(128);memset(strDest,'\0',128);char *strSrc = "123456";strcpy(strDest,strSrc);//char *strcpy(char* dest, const char *src);puts(strDest);memset(strDest,'\0',128);//再次使用时,重新初始化指针。strncpy(strDest,strSrc,3);//char *strncpy(char *destinin, char *source, int maxlen);puts(strDest);return 0;
}

结果

123456
123

字符串拼接:strcat

将两个char类型连接。
例如:
char d[20]="Golden";
char s[20]="View";
strcat(d,s);
//打印d
printf("%s",d);
输出 d 为 GoldenView (中间无空格)
d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。
返回指向d的指针。

比较:strcmp

extern int strcmp(const char *s1,const char *s2);
当s1<s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1>s2时,返回正数。 [2]
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
1."A"<"B" 2."A"<"AB" 3."Apple"<"Banana" 4."A"<"a" 5."compare"<"computer"

搜索:strchr

函数原型
char *strchr(const char *str, int c)
参数
str-- 要被检索的 C 字符串。
c-- 在 str 中要搜索的字符。
功能
在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置。
返回值
返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针。 [2]
头文件
#include <string.h>

搜索:strstr

extern char *strstr(char *str1, const char *str2);
语法:
* strstr(str1,str2)
str1: 被查找目标 string expression to search.
str2: 要查找对象 The string expression to find.
返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

大写转小写:strlwr;小写转大写:strupr

原型:extern char *strlwr(char *s);
用法:char str1[] = "Hello World";//windows环境下,要定义成数组的形式,Linux下不用。
功能:将字符串s参数转换为小写形式
说明:只转换s参数中出现的大写字母,不改变其它字符。返回指向s参数的指针。
兼容性说明:strlwr和strupr不是标准C库函数,只能在VC中使用。linux gcc环境下需要自行定义这个函数。

切割:strtok

char *strtok(char s[], const char *delim);
从s开头开始的一个个被分割的串。当s中的字符查找到末尾时,返回NULL。
如果查找不到delim中的字符时,返回当前strtok的字符串的指针。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
#include<string.h>
#include<stdio.h>
int main(void)
{char input[16]="abc,d";//windows环境下,要定义成数组的形式char*p;p=strtok(input,",");if(p)printf("%s\n",p);p=strtok(NULL,",");//获取之后的字符串时,目标位为NULL。if(p)printf("%s\n",p);return 0;
}

字符串的操作(常用的API)相关推荐

  1. Shell脚本中字符串的一些常用操作

    Shell脚本中字符串的一些常用操作 字符串长度 ${#string}可以获得${string}的长度 例子: string='How are you' echo ${#string} # 输出结果为 ...

  2. C#和C常用的API操作窗口的代码积累

    C#和C常用的API操作窗口的代码积累 IntPtr awin = MouseHookHelper.FindWindow("WeChatMainWndForPC", "微 ...

  3. C语言面试高频问题:自己代码实现字符串相关的常用API

    参考:C语言面试高频问题:自己代码实现字符串相关的常用API 作者:图触靓 发布时间: 2020-08-08 13:31:33 网址:https://blog.csdn.net/bhbhhyg/art ...

  4. mysql sql 字符串字段保留数字_SQL字符串以及数字常用操作汇总

    SQL字符串以及数字常用操作汇总 更新时间:2013年06月11日 09:05:12   作者: 本篇文章是对SQL字符串以及数字的常用操作进行了详细的总结与分析,需要的朋友参考下 --将字符串中从某 ...

  5. php字符串相关操作,PHP字符串常用操作

    常用操作有: PHP中有两个内建的函数:count() 和sizeof(),可以实现得到数组的长度 count($sttr);数组长度 字符串长度:strlen(string $a); 判断是否相同, ...

  6. C语言字符串、文件操作常用操作函数,

    C语言字符串常用操作函数 C语言字符串.文件操作常用操作函数 字符串输出 - puts() 字符串输入 - gets() 字符串比较 - strcmp() 字符串复制 - strcpy() 字符串连接 ...

  7. Elasticsearch入常用RESTful API总结

    RESTful API HTTP动词介绍 对于资源的具体操作类型,由HTTP动词表示. 常用的HTTP动词有下面五个(括号里是对应的SQL命令). GET(SELECT):从服务器取出资源(一项或多项 ...

  8. stringbuffer常用方法_第八讲:常用类库API

    一.字符串操作---String类 1.String可以表示一个字符串,不能被继承(最终类)不可变 2.String类实际是使用字符数组存储的 String类的两种赋值方式: (1)一种称为直接赋值. ...

  9. 常用快递API(顺丰、EMS、申通、圆通等)及快递在线下单API分享

    1.常用快递API 支持顺丰.EMS.申通.圆通.韵达.汇通.中通.天天.德邦.全峰等主流快递公司. 1.1常用快递查询API 接口地址:http://v.juhe.cn/exp/index 支持格式 ...

  10. 常用快递API及快递在线下单API分享

    1.常用快递API 支持顺丰.EMS.申通.圆通.韵达.汇通.中通.天天.德邦.全峰等主流快递公司. 文档地址:https://www.juhe.cn/docs/api/id/43 1.1常用快递查询 ...

最新文章

  1. 如此精心整理的深度学习资源只在这里,值得你拥有!(上篇)
  2. HTML 各种鼠标手势
  3. linux分区语言,Linux磁盘分区(9)-Go语言中文社区
  4. java相关技术简介_java技术简介?
  5. 测试配置yum仓库的http镜像
  6. [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]
  7. Python学习11 继承
  8. Linux扩展根分区大小
  9. 面试常考题:不调用库函数,怎样实现字符串操作函数?
  10. 如何使用计算机蓝牙设备管理器,电脑蓝牙bluetooth怎么使用_win7蓝牙bluetooth使用教程-系统城...
  11. 想要成为一名合格的数据分析师,需要学习哪些类型的书
  12. 蓝牙(BLE)自动配对
  13. 利用Python实现图片信息隐藏
  14. VS:如何解决VS2015的30天试用期已过即VS2015许可证已过期的问题
  15. 【海康摄像头二次开发】移植海康摄像头Android SDK并实现多屏显示
  16. 思维导图---“计算机硬件系统”练手
  17. 清华学生告诉你什么是清华!
  18. 数据流图 系统流程图 程序流程图 程序的系统结构图之间的区别和联系
  19. 2022年10月大学英语B统考题库网考大学英语B试题(完整版)
  20. ffmpeg入门教程之ffmpeg命令行------全局命令

热门文章

  1. Hive鲜为人知的宝石-Hooks
  2. Tyvj 1599 锻炼计划
  3. [PPT 设置自动换片时间] PPT有几张老自动跳过,问题的解决过程记录
  4. 【TP5】获取数据库注释信息
  5. UI层的信息推送,小红点系统
  6. Spring的控制反转与依赖注入
  7. Python脚本编写的学习
  8. element table el-table 添加横向滚动条 宽度超出时横向滚动条不出现,固定表头完美方案
  9. 荣耀V20改变的通讯规则:告别一个时代,迎来了一个时代
  10. Oracle 19c中默认端口