c中常用的字符串操作
c中常用的字符串操作
头文件:<string.h>
1.strchr()查找某字符在字符串中首次出现的位置
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);
【参数】str 为要查找的字符串,c 为要查找的字符。
strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NULL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。
【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr()
函数。
void teststrchr(char* str,char ch){
char *pch;
pch=strchr(str,ch);
while (pch!=NULL)
{
printf ("found at %d\n",pch-str+1);
pch=strchr(pch+1,ch);
}
}
2.strrchr()查找某字符在字符串中最后一次出现的位置
strrchr() 函数用于查找某字符在字符串中最后一次出现的位置,其原型为:
char * strrchr(const char *str, int c);
【参数】str 为要查找的字符串,c 为要查找的字符。
strrchr() 将会找出 str 字符串中最后一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NULL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。
【返回值】如果找到就返回该字符最后一次出现的位置,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中第一次出现的位置,可以使用 strchr()
函数。
void teststrrchr(char* str, char ch){
char *pch;
pch = strrchr(str,ch);
printf ("Last occurence of 's' found at %d \n",pch-str+1);
}
3.strstr()返回字符串中首次出现子串的地址
strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:
char *strstr( char *str, char * substr );
【参数说明】str为要检索的字符串,substr为要检索的子串。
【返回值】返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。
void teststrstr(char* str, const char* substr){
char *pch;
pch = strstr(str,substr);
if(NULL != pch)
strncpy(pch,"sample",6);
puts(str);
}
4.strtok()字符串分割
定义函数:char * strtok(char *s, const char *delim);
函数说明:strtok()用来将字符串分割成一个个片段。参数s 指向欲分割的字符串,参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s 字符串,往后的调用则将参数s 设置成NULL。每次调用成功则返回下一个分割后的字符串指针。
返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。
void teststrtok(char* str, const char* delim){
char *pch;
pch = strtok(str,delim);
while(NULL != pch){
printf("%s\n",pch);
pch = strtok(NULL,delim);
}
}
测试完整代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void teststrchr(char* str,char ch){
printf("----------------strchr------------------\r\n");
char *pch;
pch=strchr(str,ch);
while (pch!=NULL)
{
printf ("found at %d\n",pch-str+1);
pch=strchr(pch+1,ch);
}
}
void teststrrchr(char* str, char ch){
printf("----------------strrchr-----------------\r\n");
char *pch;
pch = strrchr(str,ch);
printf ("Last occurence of 's' found at %d \n",pch-str+1);
}
void teststrstr(char* str, const char* substr){
printf("----------------strrstr-----------------\r\n");
char *pch;
pch = strstr(str,substr);
if(NULL != pch)
strncpy(pch,"sample",6);
puts(str);
}
void teststrtok(char* str, const char* delim){
printf("----------------strrtok-----------------\r\n");
char *pch;
pch = strtok(str,delim);
while(NULL != pch){
printf("%s\n",pch);
pch = strtok(NULL,delim);
}
}
int main(){
char str[] = "-This is a simple string.";
printf ("Looking for the 's' character in \"%s\"...\n",str);
teststrchr(str,'s');
teststrrchr(str,'s');
teststrstr(str,"simple");
teststrtok(str," -.");
system("pause");
return 0;
}
运行结果:
c中常用的字符串操作的更多相关文章
- LoadRunner中常用的字符串操作函数
LoadRunner中常用的字符串操作函数有: strcpy(destination_string, source_string); strc ...
- PHP开发中常用的字符串操作函数
1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行 ...
- C语言中常用的字符串操作函数
程序开头要声明 #include <string.h> 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char ...
- JavaScript中常见的字符串操作函数及用法
JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- 简单入门PHP中的多字节字符串操作
什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的问题说起. 一个字符占几个字节并不是我们表面上看到的那样.正常情况下,一个数字或英文以及英文符号都是占用一个字节的. ...
- java中常用的字符串的截取方法
java中常用的字符串的截取方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...
- Js中常用的字符串,数组,函数扩展
由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...
- 工作中常用的QTP操作Excel函数
前言 本文只是对工作中常用的EOM相关函数的整理,并不是要写个大而全的操作手册,如果想对EOM有更多的了解可以参考QTP的帮助文档或查看QTP安装目录\CodeSamplesPlus\UsingExc ...
- 深圳尚学堂:JavaScript中常见的字符串操作
快到春节放假了,春节后又是一大波的找工作热潮,在前端实招聘笔试时,必不可免额会考到关于JavaScript中字符串的处理问题.考的不是你会不会,而是你能不能在不借用XX手册或者XX指南再或者百度谷歌的 ...
随机推荐
- Navicat 基于 GaussDB 主备版的快速入门
本文分享自华为云社区<Navicat 基于 GaussDB 主备版的快速入门>,作者:Navicat_China. Navicat Premium(16.2.8 Windows版或以上) ...
- java中LocalDate、Calendar、Date类型进行加减
java三种类型的加减,LocalDate.Calendar.Date @ 目录 1.LocalDate类型加减: 2.Calendar加减: 3.Date类型加减 1.LocalDate类型加减: ...
- Windows之——pid为4的system进程占用80端口的解决办法
因为Apache无法启动的原因,用netstat命令查看了一下80端口是否被占用了,如下 C:\Users\Maple>netstat -ano | findstr 0.0.0.0:80 TCP ...
- 在Winform应用中增加通用的业务编码规则生成
在我们很多应用系统中,往往都需要根据实际情况生成一些编码规则,如订单号.入库单号.出库单号.退货单号等等,我们有时候根据规则自行增加一个函数来生成处理,不过我们仔细观察后,发现它们的编码规则有很大的共 ...
- Vue2.0 学习 第三组 条件语句
本笔记主要参考菜鸟教程和官方文档编写.1.v-if在div或者之类的dom中使用v-if可以控制是否插入该dom,控制由v-if的true和false决定.如:<div id="app ...
- HBase的实验原理
功能组件: master Region Region到底被存到哪里去了 HBase的三层结构 三层结构中各个层次的名称和作用
- VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格(二)
1.文档说明 1.1.内容回顾 之前发表过相关文章<VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格>,本篇文章对上一篇文章做补充说明. 第一篇文章是通过拥有权限,则隐 ...
- svn、git服务器配置进程方式网关不生效常见处理方法
过华企盾DSC防泄密系统配置svn或者git服务器的时候,网关不生效如何解决? 1.先在cmd中运行一下命令netstat -ano|findstr "8080" 找到svn.gi ...
- 使用ztncui配置私有化zerotier服务器
众所周知,Zerotier-One是一个非常好的组建虚拟局域网的工具,可以以p2p的方式穿透NAT网络进行连接.但是在使用中也仍然存在着一些瑕疵,主要就是以下两点: 因为Zerotier官方提供的中心 ...
- springboot产生非法状态异常+空指针
springboot产生非法状态异常+空指针 描述:异常描述为在响应提交后不能执行senderror方法 解决方案: 不是,哥们,你不会真觉得有什么合适的解决方案吧,网上几波前辈大佬各说各的,和我的情 ...