C语言字符串操作

strtok

  • 定义:char *strtok(char s[], const char *delim);
  • s为要分解的字符串
  • delim为分隔符字符串
  • 当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针 #include <stdio.h> #include <string.h> void printArr(char *, int); int main() { char s[30] = "abc dedef gdhi de jkl"; const char *delim = "de"; printArr(s, 30); printf("\n"); char *result = strtok(s, delim); while (result) { printf("%s|%s\n", result, s); result = strtok(NULL, delim); } printArr(s, 30); return 0; } void printArr(char *s, int n) { for (int i = 0; i < n; i++) { printf("[%c#%-3d] ", s[i], s[i]); } } 结果: [a#97 ] [b#98 ] [c#99 ] [ #32 ] [d#100] [e#101] [d#100] [e#101] [f#102] [ #32 ] [ #32 ] [g#103] [d#100] [h#104] [i#105] [ #32 ] [ #32 ] [ #32 ] [ #32 ] [d#100] [e#101] [ #32 ] [ #32 ] [ #32 ] [ #32 ] [j#106] [k#107] [l#108] [ #0 ] [ #0 ] abc |abc f g|abc hi |abc jkl|abc [a#97 ] [b#98 ] [c#99 ] [ #32 ] [ #0 ] [e#101] [d#100] [e#101] [f#102] [ #32 ] [ #32 ] [g#103] [ #0 ] [h#104] [i#105] [ #32 ] [ #32 ] [ #32 ] [ #32 ] [ #0 ] [e#101] [ #32 ] [ #32 ] [ #32 ] [ #32 ] [j#106] [k#107] [l#108] [ #0 ] [ #0 ]

4.png

注意:

  • 分割的字符串不能为常量
  • 第一次调用需要传入需要分割的字符串,后面就传入NULL。
  • 如果未找到分割的字符串,则范围当前字符串的指针
  • 所有出现分割字符串的地方都会被过滤, 如上面代码 dede
  • strtok会破坏被分解的字符串,调用前后不一致。我们看到运行结果,所有出现de的地方,第一个字符被替换成了'\0'。

strchr

  • 定义:char strchr(const char _Str,char _Val)
  • 回首次出现_Val的位置的指针,返回的地址是被查找字符串指针开始的第一个与Val相同字符的指针,如果Str中不存在Val则返回NULL
  • 返回值:成功则返回要查找字符第一次出现的位置,失败返回NULL int main() { char s[30] = "abc dedef gdhi de jkl"; char *result = strchr(s, 'd'); printf("%s\n", result); return 0; } 结果: dedef gdhi de jkl

strstr

  • 定义:char *strstr (const char *, const char *)
  • 判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python常用运算符含义与用法演示

+运算符除了用于算术加法,还可以用于列表、元组和字符串的合并或连接,生成新对象: >>> 3 + (3+4j) #整数和复数相加 (6+4...

29840
来自专栏C/C++基础

C++11继承构造函数

子类为完成基类初始化,在C++11之前,需要在初始化列表调用基类的构造函数,从而完成构造函数的传递。如果基类拥有多个构造函数,那么子类也需要实现多个与基类构造函...

16920
来自专栏水击三千

JavaScript基本类型与引用类型

前面已经说过,JavaScript变量是松散类型,它可以保存任何类型的值。变量的值以及数据类型可以在脚本的生命周期内发生改变。变量包含两种不同类型的值:基本类型...

26670
来自专栏码云1024

JAVA 面向对象

45860
来自专栏运维技术迷

连仕彤博客[Python笔记] locals() 函数

16030
来自专栏杨熹的专栏

Day 1-Java-imooc-3.运算符

课程地址:http://www.imooc.com/learn/85 总结图片来自 http://www.imooc.com/article/10535 ? 本...

38660
来自专栏编程

每日一练:阶乘序列求和

问题:求前n项和:1+2!+3!+4!+5!+......+n! 解题思路: 这么简单,不需要思路吧。 解题源码分享: # 法一:通过递归实现 deffacto...

23570
来自专栏小白的技术客栈

Python运算符

今天开始讲解Python的运算符,这一节比较简单,知识点不多。 上文回顾 今天回顾一下昨天的文章主要讲了哪些知识点: Python是一门动态的强类型语言; 变量...

54780
来自专栏程序员同行者

python lambda表达式简单用法

8820
来自专栏有趣的django

5.python函数

函数介绍 定义:  函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。 特性:减少重复代码、使程序变的可扩展、使程...

31960

扫码关注云+社区

领取腾讯云代金券