- char *strstr( char *str1, const char *str2);
//查找str2 是否在 str1 中,如果在则返回从str2开始的位置到str1结束位置的所有字符 - char *strchr(const char *str, int ch);
//查找字符 ch 在字符串 str 中首次出现的位置,成功则返回从 ch 开始位置到 str 的结束位置所有字符 - char *strrchr(const char *str, int ch);
//查找某字符在字符串中最后一次出现的位置,成功则返回从 ch 开始位置到 str 的结束位置所有字符 - strcpy(char *dest, const char *src);
//将字符串source 拷贝到字符串 dest 中 - strncpy(char *dest, const char *sr, size_t n)
//将参数src字符串拷贝前n个字符至参数dest所指的地址 - sscanf (const char *str,const char * format,…);
- strlen(…) //求字符串的实际长度
- strcmp(str1,str2) //比较两个字符串的大小
- strncmp(const char *str1, const char *str2, size_t n)
//比较两个字符串的前 n 个字节 - strcat(str1, str2) //链接两字符串
- strncat(str1,str2,n)
//将字符串str2的前n个字符添加到字符串str1的尾部 - strpbrk(str1,str2)
//依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置 - atoi(str); //字符串转换到int整型
- atof(str); //字符串转换到double浮点数
- atol(str); //字符串转换到long整形
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*strstr( )*/
void StrStr(char *s1, const char *s2)
{
char *PStr;
PStr = strstr(s1, s2);
printf("strstr: %s\n", PStr); //打印结果:likeabird
if(PStr != NULL)
PStr = PStr + 4;
printf("strstr_1: %s\n", PStr); //打印结果:abird
}
/*strchr( )*/
void StrChr(char *s, char c)
{
char *p;
p =strchr(s, c);
printf("strchr: %s\n", p);
}
/*strrchr( ) strcpy( )*/
void StrrChrAndStrcpy(char *s, char c)
{
char *p;
char resultStr[32]={0};
p =strrchr(s, c);
if(p != NULL)
{
strcpy(resultStr, p + 1);
}
printf("strrchr: %s\n", resultStr);
}
/*sscanf(...)*/
void Sscanf(const char *s)
{
char result[64];
/*获取指定长度字符串*/
sscanf(s, "%4s", result);
printf("sscanf_1: %s\n", result);
/*取到指定字符为止的字符串,取遇到空格为止字符串*/
sscanf(s, "%[^ ]", result);
printf("sscanf_2: %s\n", result);
/*取仅包含指定字符集的字符串*/
sscanf(s, "%[1-9a-z]", result); //只取数字和小写字符
printf("sscanf_3: %s\n", result);
/*取到指定字符集为止的字符串*/
sscanf(s, "%[^a-z]", result);
printf("sscanf_4: %s\n", result); //取遇到小写字母为止的字符串
/*取需要的字符串*/
int a; char b; char c[64];
sscanf(s, "%d,%c,%s", &a,&b,c); //取需要的字符串
printf("sscanf_5:\n a = %d, b = %c, c = %s\n", a, b, c);
/*取出$与$之间的字符串*/
/*解释: 其中%[]类似于一个正则表达式,如[a-z]表示读取所有a-z的字符,[^a-z]表示读取所有非小写字母的字符。
那么在这里%*[^$]表示先过滤掉 '1234,A,',然后以$隔开,后面还剩youare$....,然后将$之前非$的字符提取到str中*/
sscanf(s, "%*[^$]$%[^$]", result);
printf("sscanf_6: %s\n", result);
/* "hello, world",如果我想仅保留world,那该怎么办呢?(,后面有个空格)*/
/*其中%*s表示第一个被匹配到的字符串hello,被过滤掉了,如果没有空格,则结果为NULL。
其实“hello, world”被空格分割成了两个字符串"hello,"和"world".*/
char str3[]= "hello, world";
sscanf(str3, "%*s%s", str3 );
printf("sscanf_str3: %s\n",str3);
}
int main(int argc, const char **argv)
{
char str1[] = "1234,A,$youare$ alwayslikeaBIRD";
const char str2[]="like";
char ch = 'a';
/*strstr(s1,s2)*/
StrStr(str1, str2);
/*strchr(s1, ch)*/
StrChr(str1, ch);
/*strrchr(s1, ch) strcpy(s1, s2)*/
StrrChrAndStrcpy(str1, ch);
/*sscanf(...)*/
Sscanf(str1);
return 0;
}
欢迎留言交流,看完觉得有帮助点个赞吧 !