C语言:字符串函数(2)-创新互联
strcmp:(字符串比较)
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、虚拟空间、营销软件、网站建设、宁乡网站维护、网站推广。#include
int strcmp(const char* str1, const char* str2);
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字0
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字
那么如何判断两个字符串? 答:比较的是两个字符串的首字母谁更大,如果一样则比较下一个
模拟实现自己的strcmp函数:
int my_strcmp(const char*str1,const char*str2)
{assert(str1&&str2);//str1和str2都不能为空指针
while(*str1==*str2)
{if(*str1=='\0')
{return 0;//两个字符串都比到\0了,相等
}
str1++;
str2++;
}
if(*str1>*str2)
return 1;//大于
else
return -1;//小于
}
char*p1="abcde";
char*p2="acbde";
int ret=my_strcmp(p1,p2);
printf("%d\n",ret);
strncmp:
(受长度限制的字符串比较,第三个参数为比较字符的个数)
#include
int strncmp(const char * str1, const char * str2, size_t num);
我们一般查文档时,看到如下两种null代表两种不同的意思
NULL – 空指针
Null或者NUL – \0
strstr:(查找字符串)
#include
char * strstr(const char*, const char*);
找到对应字符串的地址,并将其打印出来。
模拟实现自己的strstr函数:
char*my_strstr(char*p1,char*p2)
{assert(p1!=NULL);
assert(p2!=NULL);
//先把p1,p2地址用其他变量存起来
char*s1=p1;
char*s2=p2;
char*cur=p1;
//空字符串是任何一个字符串的子串
//空字符串也是有地址的,不等于空指针
//空指针是指不指向任何字符串的指针,而空字符串也是字符串哦
if(*p2=='\0')//若查找的字符串是空字符串
{return p1;
}
while(*cur)
{s1=cur;
s2=p2;
while((*s1!='\0')&&(*s2!='\0')&&(*s1==*s2))
{s1++;
s2++;
}
if(*s2=='\0')
{return cur;//找到子串
}
cur++;
}
return NULL;//找不到子串
}
char*a="abbbcde";
char*b="bbc";
char*c=my_strstr(a,b);
printf("%s\n",c);
strerror:获取指向错误消息字符串的指针
#include
#include
char * strerror (int errnum);
strerror用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回.
返回值:返回值为char*类型,返回描述错误原因的字符串指针.
实例:
#include#include#includeint main ()
{FILE *fp;
fp = fopen("file.txt","r");
if( fp == NULL )
{ printf("Error: %s\n", strerror(errno));
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果,因为我们尝试打开一个不存在的文件:
Error: No such file or directory
意思是没有这样的文件
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章标题:C语言:字符串函数(2)-创新互联
本文链接:http://scyanting.com/article/csejcs.html