当前位置: 首页 > news >正文

C语言基础:字符串函数使用与剖析

strtok(分割字符串)

char * strtok ( char * str, const char * sep );

  • sep参数是个字符串,定义了用作分隔符的字符集合  
  • 第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标 记。
  • strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改。)
  • strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串 中的位置。
  • strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标 记。
  • 如果字符串中不存在更多的标记,则返回 NULL 指针。

这个函数什么意思呢?

比如一个字符串为  zpw@bitedu.tech

  我们要拆分为       zpw    bitedu  tech  三个字符串,把@和.作为分隔符 

char arr[] = "zpw@bitedu.tech";const char* p = "@.";

使用这个函数,就会把@改为\0,同时把z的地址返回来

调用一次函数只能切割一次,

strtok有某种记忆的功能,他会记住把分隔符变成\0的位置

怎么使用呢:

#include<string.h>
int main()
{char arr[] = "zpw@bitedu.tech";const char* p = "@.";char buf[1024] = { 0 };strcpy(buf, arr);const char*ret=strtok(arr, p);printf("%s\n", ret);ret = strtok(NULL, p);printf("%s\n", ret);ret = strtok(NULL, p);printf("%s\n", ret);return 0;
}

更加优化的代码:

int main()
{char arr[] = "zpw@bitedu.tech";const char* p = "@.";char buf[1024] = { 0 };strcpy(buf, arr);char* ret = NULL;for (ret = strtok(arr, p); ret != NULL; ret = strtok(NULL, p)){printf("%s\n", ret);}return 0;
}

字符转换函数

int tolower ( int c );//将大写变成小写的函数,如果传入的是小写字母,不受影响

#include<ctype.h>
int main()
{char ch = tolower('Q');putchar(ch);return 0;
}

int toupper ( int c );//将小写变成大写的函数,如果传入的是大写字母,不受影响

#include<ctype.h>
int main()
{char ch = toupper('q');putchar(ch);return 0;
}

如果把一串字符串变成小写,可以使用循环来解决。 

#include<ctype.h>
int main()
{/*char ch = toupper('q');*/char arr[] = "I AM A student";int i = 0;while (arr[i]){if (isupper(arr[i])){arr[i]=tolower(arr[i]);}i++;}printf("%s\n", arr);return 0;
}

isupper     如果他的参数符合下列条件就返回真     判断大写字母A~Z

 其他字符分类函数如下:(返回真是指返回不为0的数)

函数                                             如果他的参数符合下列条件就返回真

 iscntrl                                          任何控制字符

isspace            空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符'\t'或者垂直制表符'\v'  

isdigit                                           十进制数字 0~9  

islower                                          小写字母a~z  

isupper                                          大写字母A~Z  

isalpha                                         字母a~z或A~Z  

isalnum                                        字母或者数字,a~z,A~Z,0~9  

 

http://www.lryc.cn/news/365676.html

相关文章:

  • 搭建Vulnhub靶机网络问题(获取不到IP)
  • Prompt 提示词强大方法论和框架2
  • C语言分支和循环(2)
  • 14.FreeRTOS 流媒体缓存 Stream Buffer
  • 利用ffmpeg把视频分解成图片(每秒x张图)再图片合成视频
  • 冯喜运:6.7今日外汇黄金原油走势分析及日内操作策略
  • [网络基础]——计算机网络(OSI)参考模型 详解
  • 使用 Java 获取图片的 MD5 编码
  • GO——泛型
  • TSP(Python):Qlearning求解旅行商问题TSP(提供Python代码)
  • 【精通NIO】NIO介绍
  • ssh远程管理
  • 【ai】pycharm远程ssh开发
  • leetcode 9 回文数
  • 学习Python的基础知识
  • 第五届上海市青少年算法竞赛网络同步赛(小学组)
  • 【区分vue2和vue3下的element UI Cascader 级联选择器组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • pottery,一个超酷的 Python 库!
  • 【Android面试八股文】在Java中重载和重写是什么意思,区别是什么?
  • 【第二篇】SpringSecurity源码详解
  • 基于Python+FFMPEG环境下载B站歌曲
  • 静态 VxLAN 浅析及配置示例(头端复制)
  • 2023年与2024年AI代理基础设施的演进:六大关键变化
  • 实验三-8086指令的应用《计算机组成原理》
  • 《维汉翻译通》App全新升级:维吾尔语短文本翻译、汉语拼音标注、维语词典、谚语格言名句等功能统统免费!还支持维吾尔文OCR识别提取文字!
  • 全年申报!2024年陕西省双软企业认定条件标准、申报好处费用
  • 系统移植 (以将Linux系统移植到S5P6818开发板为例)
  • 超长正整数的加法
  • C++ - 查找算法 和 其他 算法
  • 字符串的信号(SIGNAL)和槽(SLOT)的宏连接方式弊端