1. c语言字符串处理函数strcmp
strcmp是比较古老的函数了,它就是在检查'\0'为结尾的字符串,你的字符数组位置为5时,没有位置来存储'\0',所以函数strcmp检查时候不会停止,会继续向后面检查(后面的地址没有赋值,都是随机的数,直到遇见'0'),所以不会相等。
2. C语言关于字符串的操作函数有哪些
string.h头文件中包含的字符串函数
void*memcpy(void*dest,constvoid*src,size_tn);//将n字节长的内容从一个内存地址复制到另一个地址;如果两个地址存在重叠,则最终行为未定义
void*memmove(void*dest,constvoid*src,size_tn);//将n字节长的内容从一个内存地址复制到另一个地址;与memcpy不同的是它可以正确作用于两个存在重叠的地址
void*memchr(constvoid*s,charc,size_tn);//在从s开始的n个字节内查找c第一次出现的地址并返回,若未找到则返回NULL
intmemcmp(constvoid*s1,constvoid*s2,size_tn);//对从两个内存地址开始的n个字符进行比较
void*memset(void*,int,size_t);//用某种字节内容覆写一段内存空间
char*strcat(char*dest,constchar*src);//在字符串dest之后连接上src
char*strncat(char*dest,constchar*src,size_tn);//从src截取n个字符连接在字符串dest之后,返回dest字符串
char*strchr(constchar*str,intch);//从字符串str头开始查找字符ch首次出现的位置
char*strrchr(constchar*str,intch);//从字符串str尾开始查找字符ch首次出现的位置
intstrcmp(constchar*,constchar*);//基于字典顺序比较两个字符串
intstrncmp(constchar*,constchar*,size_t);//基于字典顺序比较两个字符串,最多比较n个字节
intstrcoll(constchar*,constchar*);//基于当前区域设置的字符顺序比较两个字符串
char*strcpy(char*str1,constchar*str2);//将str2拷贝给str1
char*strncpy(char*str1,constchar*str2,size_tn);//截取str2的n个字符拷贝给str1
char*strerror(int);//返回错误码对应的解释字符串,参见errno.h(非线程安全函数)
size_tstrlen(constchar*);//返回一个字符串的长度
size_tstrspn(constchar*s,constchar*strCharSet);//从字符串s的起始处开始,寻找第一个不出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由strCharSet中的字符构成的子串的最大长度。strspn为stringspan的缩写。不支持多字节字符集。
size_tstrcspn(constchar*s,constchar*strCharSet);//从字符串s的起始处开始,寻找第一个出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由不属于strCharSet中的字符构成的子串的最大长度。strcspn为stringcomplementspan的缩写。不支持多字节字符集。
char*strpbrk(constchar*s,constchar*strCharSet);//在字符串s中查找strCharSet中任意字符第一次出现的位置的指针值。strpbrk为stringpointerbreak缩写。不支持多字节字符集。
char*strstr(constchar*haystack,constchar*needle);//在字符串haystack中查找字符串needle第一次出现的位置,heystack的长度必须长于needle
char*strtok(char*strToken,constchar*strDelimit);//将一个字符串strToken依据分界符(delimiter)分隔成一系列字符串。此函数非线程安全,且不可重入;但MSVC实现时使用了thread-localstaticvariable因而是线程安全的单仍然是不可重入,即在单线程中不能对两个源字符串交替调用该函数来分析token,应当对一个字符串分析完成后再处理别的字符串。
size_tstrxfrm(char*dest,constchar*src,size_tn);//根据当前locale转换一个字符串为strcmp使用的内部格式
3. C语言中怎样设计一个函数实现两个字符串的连接
char
*
strcat(char
*s,
const
char
*append)
{
//将s所指向的字符串的首地址保存下来,以便使用
char
*save
=
s;
//将s所指向的字符串的首指针移至串尾处,s指针指向的字符元素为'\0'
for
(;
*s;
++s);
//将append所指的字符串的元素复制到s所指向的字符串尾部,直至遇到'\0'
while
((*s++
=
*append++)
!=
'\0');
//返回追加后的字符串首地址
return(save);
}
4. 用C语言:写一个函数,将两个字符串连接
字符串连接:即将字符串b复制到另一个字符a的末尾,并且字符串a需要有足够的空间容纳字符串a和字符串b。
#include<stdio.h>
voidmystrcat(chara[],charb[]){//把a和b拼接起来
inti=0,j=0;
while(a[i++]!='