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://myzitong.com/article/csejcs.html