字符串拷贝函数strcpy
- 头文件:#include <string.h>
- 格式:strcpy(字符数组1,字符串2)
- 功能:将字符串2,拷贝到字符数组1中去
- 返值:返回字符数组1的首地址
- 说明:
字符串连接函数strcat
- 头文件:#include <string.h>
- 格式:strcat(字符数组1,字符数组2)
- 功能:把字符数组2连到字符数组1后面
- 返值:返回字符数组1的首地址
- 说明:
- 字符数组1必须足够大
- 连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串最后加‘\0’
字符串比较函数strcmp
- 头文件:#include <string.h>
- 格式:strcmp(字符串1,字符串2)
- 功能:比较两个字符串
- 比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
- 返值:返回int型整数
- 若字符串1<字符串2,返回负整数
- 若字符串1>字符串2,返回正整数
- 若字符串1==字符串2,返回零
isalpha函数
- 包含头文件:#include<ctype.h>
- 函数声明:int isalpha(intc);
- 功能说明:判断参数c是否为字母
- 返回值:
isupper()函数
- 包含头文件:#include<ctype.h>
- 函数声明:int isupper(intc);
- 功能说明:判断参数c是否为大写字母
- 返回值:
toupper()函数
- 包含头文件:#include<ctype.h>
- 函数声明:int toupper(intc);
- 功能说明:把小写字母转换为大写字母,如果参数c不是小写字母就不转换
- 返回值:返回值为转换后的结果。
tolower()函数
- 包含头文件:#include<ctype.h>
- 函数声明:int tolower(intc);
- 功能说明:将给定的大写字母转换为对应的小写字母。如果给定的字符不是大写字母,则不对它做任何处理,也不会报错或者警告。
- 返回值:返回值如果传入的字符是大写字母,则返回该字母的小写形式;如果传入的字符不是大写字母,则原样返回该字符。
strncpy函数
- char* strncpy (char* dest, const char* src,size_t n)
- dest:目标字符串,即要将源字符串复制到的位置。
- src:源字符串,即要复制的字符串。
- n:要复制的字符数。
- 头文件:#include<string.h>
- 目标字符串dest必须足够大,以容纳要复制的以及额外的’\0’。否则,可能会导致缓冲区溢出的问题。
- 如果源字符串的长度大于或等于n,则目标字符串将不会以’\0’结尾,需要手动添加’\0’。
- 如果源字符串的长度小于n,则复制完源字符串后,会用’\0’填充剩余的空间。
strncat函数
- 函数原型:char* strncat (char* dest, const char* src, int n)
- 头文件:#include<string.h>
- 返回值:返回dest字符串的起始地址
- 说明:
- 1.dest要有足够的空间来容纳要拷贝的字符串
- 2.strncat会将dest字符串最后的’\0’覆盖掉,字符追加完成后,再追加’\0’
- 3.如果源字符串的长度小于n,会将源字符串的全部字符追加到目标字符串中。如果源字符串的长度大于或等于n,则只会将源字符串的前n个字符追加到目标字符串中。
#include <stdio.h>
#include <string.h>
#include <assert.h>
char* My strncat(char* dest, const char* src, int n)
{
char* ret= dest;
assert(dest!=NULL && src!=NULL);
while(*dest !='\0')
dest++;
while(n && (*dest++=*src++) != '\0')
n--;
*dest='\0';
retumn ret;
}
strncmp函数
- int strncmp (const char* str1, const char* str2, size_t n)
- #include<string.h>
- 返回值:
- str1=str2则返回0,
- str1>str2则返回大于0的值,
- str1<str2则返回小于0的值
- 将str1字符串的第一个字符的ACSII值减去str2第一个字符的ACSII值(自左向右比较前n个字符,直到出现不同的字符或遇’\0’为止)
- 若差值为零则继续比较下去;若差值不为零,则返回差值。
int My strncmp(const char* strl, const char* str2, int n)
{
if(!n)
return 0;
while(--n && *strl && *strl-*str2)
{
strl++;
str2++;
}
return *strl -*str2;
}
strchr函数
- char* strchr (const char* str, int c);
- 参数说明:str:要搜索的字符串。c:要查找的字符,作为一个整数传递给函数。
- 返回值:
- 如果找到了字符c,则返回一个指向该字符的指针。
- 如果未找到字符c,则返回NULL指针。
- 功能:用于查找字符在字符串中第一次出现的位置
#include <stdio.h>
char *myStrchr(char *str, int c)
{
while (*str != '\0')
{
if(*str == c)
{
return str;
}
str++;
}
return NULL;
}
int main()
{
char *str = "Hello,world!";
char *result = myStrchr(str,'o');
if (result != NULL){
printf("在字符串中找到字符'o',位置为:%ld\n",result- str);
}
else {
printf("未找到字符'o'。\n");
}
return 0;
}
strstr函数
- char* strstr (const char* str1, const char* str2);
- 功能:返回字符串中首次出现子串的地址
- 参数:
- 1.str1:要扫描的字符串
- 2.str2:包含要匹配的字符序列的字符串。
- 返回值:返回指向str2中第一次出现在str1的指针,如果str2不是str1的一部分,则返回一个空指针。匹配过程不包括终止’\0’,但它到此为止。
#include <stdio.h>
char* my_strstr(const char* str1,const char* str2)
{
char* p = str1;
char* s1 = p;
char* s2 = str2;
while(*p!='\0')
{
s1 = p;
s2 = str2;
while(*s1!='\0' && *s2!='\0' && *s1==*s2)
{
s1++;
s2++;
}
if(*s2=='\0')
return p;
p++;
}
return NULL;
}