linux string strnicmp


原文链接: 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
原型:int strcmp(char *s1,char * s2);
功能:比较字符串s1和s2。
说明:
当s1s2时,返回值>0
举例:
char *s1="Hello, Programmers!";
char *s2="Hello, programmers!";

r=strcmp(s1,s2); //r小于0, 参见ascii表

stricmp,strcmpi
原型:int stricmp(char *s1,char * s2);
功能:比较字符串s1和s2,但不区分字母的大小写。
说明:strcmpi是到stricmp的宏定义,实际未提供此函数。
当s1<s2时,返回值<0
当s1=s2时,返回值=0

当s1>s2时,返回值>0

strncmp
原型:int strcmp(char *s1,char * s2,int n);
功能:比较字符串s1和s2的前n个字符。
说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0

当s1>s2时,返回值>0

strnicmp,strncmpi
原型:int strnicmp(char *s1,char * s2,int n);
功能:比较字符串s1和s2的前n个字符但不区分大小写。
说明:strncmpi是到strnicmp的宏定义
当s1<s2时,返回值<0
当s1=s2时,返回值=0

当s1>s2时,返回值>0

strcat
原型: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);

strncat
原型:char *strncat(char *dest,char *src,int n);
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。

`