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指南再或者百度谷歌的 ...
随机推荐
- SQL INSERT INTO 语句详解:插入新记录、多行插入和自增字段
SQL INSERT INTO 语句用于在表中插入新记录. INSERT INTO 语法 可以以两种方式编写INSERT INTO语句: 指定要插入的列名和值: INSERT INTO 表名 (列1, ...
- Windows文件句柄无效
今天我用FreeFileSync从移动硬盘复制一个名为Con的文件夹到本地硬盘,复制失败. 通过文件夹资源管理器Explorer直接访问文件夹则提示"禁止访问",右键属性切换到安全 ...
- 微信小程序敏感内容检测
获取access_token access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保 ...
- MySQL-管理员root@'locahost' 丢失,怎么处理?
版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin 跳过授权表 ----> 不开启验证功能(无密码登录) --skip-grant-tables 阻止所有tcp/i ...
- 介绍一个我开源的项目:一键部署 VictoriaMetrics 群集
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我实在是非常喜欢这个强大的 metrics 监控组件 Vi ...
- [ABC328D] Take ABC 题解
题目翻译 题目描述 给你一个字符串 \(S\) 包含 A.B 和 C 三个不用的字符. 只要字符串 \(S\) 中包含连续的 ABC 就将 ABC 删除掉 再字符串 \(S\) 不能操作之后输出这个字 ...
- 吉特日化MES & SQL Server 无法执行数据库脚本
打开服务器打算远程执行一下脚本,突发发现数据库无法执行脚本,就想着是不是安装了 海康AGV 控制系统的问题导致,问题如下: 问题截图如下: 报错信息如下: ====================== ...
- [.NET开发者的福音]一个方便易用的在线.NET代码编辑工具.NET Fiddle
前言 今天给大家分享一个方便易用的.NET在线代码编辑工具,能够帮助.NET开发人员快速完成代码编写.测试和分享的需求(.NET开发者的福音):.NET Fiddle. .NET Fiddle介绍 我 ...
- 使用.NET Core接入飞书AI
飞书AI接入教程 首先,准备俩个账号:ChatGPT账号.飞书账号. 飞书账号请自行注册,访问链接 www.feishu.cn/ 即可登录. 第一步,飞书进入开发者平台.点击创建应用. 填写应用名称和 ...
- ASR项目实战-项目交付历程
本文记录,作为项目主要负责人,完整参与语音识别项目的交付历程. 2019年12月中旬 接到项目交付任务,收集基本知识,启动业务分析工作. 2020年1月 完成竞品分析的整理. 梳理合作伙伴的清单,整理 ...