新聞中心
strcmp:(字符串比較)
#include
int strcmp(const char* str1, const char* str2);
標準規(guī)定:
第一個字符串大于第二個字符串,則返回大于0的數(shù)字0
第一個字符串等于第二個字符串,則返回0
第一個字符串小于第二個字符串,則返回小于0的數(shù)字
那么如何判斷兩個字符串? 答:比較的是兩個字符串的首字母誰更大,如果一樣則比較下一個
模擬實現(xiàn)自己的strcmp函數(shù):
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:
(受長度限制的字符串比較,第三個參數(shù)為比較字符的個數(shù))
#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*);
找到對應字符串的地址,并將其打印出來。
模擬實現(xiàn)自己的strstr函數(shù):
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用來依參數(shù)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
意思是沒有這樣的文件
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當前名稱:C語言:字符串函數(shù)(2)-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.ef60e0e.cn/article/csejcs.html