专栏首页流媒体C语言字符串操作

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 条评论
登录 后参与评论

相关文章

  • C语言结构体对齐

    用户2929716
  • Linux 输出重定向 2>&1

    nohup /mnt/Nand3/H2000G >/dev/null 2>&1 &

    用户2929716
  • 基于FFmpeg进行RTMP推流(二)

    在前面一节基于FFmpeg进行RTMP推流(一)我们写了最简单的一版推流代码。但细心调试过的兄弟会发现当我们把文件换成mp4后,发现上面的代码在写入文件头时报错...

    用户2929716
  • CVE-2017-5941: 利用Node.js反序列化漏洞执行远程代码

    若不可信的数据传入 unserialize() 函数,通过传递立即调用函数表达式(IIFE)的 JavaScript 对象可以实现任意代码执行。漏洞CVE: C...

    Debian社区
  • HACK THE BOX Celestial Write Up

    于是我们进行burp抓包发现cookie里有疑似base64加密的字符串于是对其进行解密

    用户2202688
  • Retrofit源码分析

    用户1907613
  • learning札记| 2nd | 以任务为目的的智能体构建 | 纠正智能技术的娱乐化倾向 | 朱松纯大师说AI

    朱教授这篇正本清源的综述性文章,建立在大师深厚的数学功底和长期从事机器视觉、机器人等领域研究基础上,将人工智能领域面临的本质问题进行了深入剖析:...

    用户7623498
  • 即时通讯软件可以用GO语言实现吗

    四个方面特点: 1. 并发支持 对于及时通讯、网络编程等方面,并发支持一定是并不可少的。 goroutine,用户态"线程",大家所说的协程,支持并发操作。已经...

    李海彬
  • 独家专访 ASF 董事会主席 Craig Russell:Apache 之道

    开源社理事长、Apache member 刘天栋Ted如是说:去年 Craig 来到深圳参加 2018 中国开源年会 (COSCon’18) 时还是董事会秘书,...

    开源社
  • 在CVM上迁移Apache数据

    在Debian 8上,Apache2 Web服务器默认文件在/var/www/html中。此目录与操作系统一起位于根文件系统上。您可能希望将文档移动到另一个目录...

    挺问中原

扫码关注云+社区

领取腾讯云代金券