linux string strnicmp
char pDescr[100]
strcpy(pDescr, "v=0\r\n");
strcat(pDescr, "o=-");
strcat(pDescr, pSdpId);
#include <stdio.h>
#include <string.h>
void main()
{
char *input="I am OldWolf";
char *str="I am Oldwolf";
int cmp;
printf("原字符串分别为:\n%s\n%s\n\n",str1,str2);
res=strnicmp(*input, str, strlen(input));
printf("%d",res);
}
#ifndef __HAVE_ARCH_STRNICMP
/**
* strnicmp - Case insensitive(忽视大小写), length-limited string comparison
* @s1: One string
* @s2: The other string
* @len: the maximum number of characters to compare
*/
int strnicmp(const char *s1, const char *s2, size_t len)
{
/* Yes, Virginia, it had better be unsigned */
unsigned char c1, c2;
c1 = 0; c2 = 0;
if (len) {
do {
c1 = *s1; c2 = *s2;
s1++; s2++;
//是否已到字符串的末尾或两字符串是否有空串,如果到了末尾或有空串,则比较完毕
if (!c1)
break;
if (!c2)
break;
//如果没有,且字符串相等,则继续比较下个字符
if (c1 == c2)
continue;
//如果不相同,则同时转换为小写字符再进行比较
c1 = tolower(c1);
c2 = tolower(c2);
//如果不相同,则比较完毕,否则继续
if (c1 != c2)
break;
} while (--len);
}
return (int)c1 - (int)c2;
}
#endif
strcmp stricmp,strcmpi strncmp strnicmp,strncmpi strcat strncat
原型:int strcmp(char *s1,char * s2);
功能:比较字符串s1和s2。
说明:
当s1
举例:
char *s1="Hello, Programmers!";
char *s2="Hello, programmers!";r=strcmp(s1,s2); //r小于0, 参见ascii表
原型:int stricmp(char *s1,char * s2);
功能:比较字符串s1和s2,但不区分字母的大小写。
说明:strcmpi是到stricmp的宏定义,实际未提供此函数。
当s1<s2时,返回值<0
当s1=s2时,返回值=0当s1>s2时,返回值>0
原型:int strcmp(char *s1,char * s2,int n);
功能:比较字符串s1和s2的前n个字符。
说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0当s1>s2时,返回值>0
原型:int strnicmp(char *s1,char * s2,int n);
功能:比较字符串s1和s2的前n个字符但不区分大小写。
说明:strncmpi是到strnicmp的宏定义
当s1<s2时,返回值<0
当s1=s2时,返回值=0当s1>s2时,返回值>0
原型:char *strcat(char *dest,char *src);
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
举例:
char d[20]="Golden Global";
char *s=" View";strcat(d,s);
原型:char *strncat(char *dest,char *src,int n);
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。