str函数

str函数(头文件:string.h)

=================目录=====================

  • str函数(头文件:string.h)
    • =====================================
  • 一、str函数
    • 1.strlen--------求字符串长度
    • 2.strcpy-------字符串拷贝
      • strncpy-------字符串拷贝
    • 3.strcat--------字符串追加
      • strncat---------------字符串追加
    • 4.strcmp---字符串的比较、
      • strncmp---字符串的比较
    • 5.strstr-----查找字符串
    • 6.strtok(str,sym)----查找特殊符号
    • 7.strerror(a)----------把错误码翻译成错误信息
    • 8.strchr---------字符串中搜索一个字符
    • =====================================

=====================================

一、str函数

1.strlen--------求字符串长度

int strlen(const char* string)

①参数

  • string---------字符串

②返回值

  • 字符串长度

③注意事项

  • 返回值类型为unsigned int
  • 遇到\0结束
  • 不包含\0

strlen的模拟实现 - my_strlen

int my_strlen(const char* string) {
assert(string != NULL);
int count = 0;
while (*string) {
string++;
count++;
}
return count;
}

2.strcpy-------字符串拷贝

将src拷贝在des中

char* my_strcpy(char* des, const char* src)

①参数

  • des---------指向要复制内容的目标数组的指针。
  • src----------要复制的C字符串。

②返回值

  • des的起始地址

③注意事项

  • 返回值类型为char*
  • 遇到\0结束
  • 不包含\0

strcpy的模拟实现 - my_strcpy

char* my_strcpy(char* des, const char* src) {
	assert(des != NULL);
	assert(src != NULL);
	char* ret = des;
	while (*des = *src) {
		des++;
		src++;
	}
	return ret;
}

strncpy-------字符串拷贝

将size大小的src拷贝到des中

char* my_strcpy(char* des, const char* src,size_t size)

①参数

  • des---------指向要复制内容的目标数组的指针。
  • src----------要复制的C字符串。
  • size---------要复制的字符串的大小。

②返回值

  • des的起始地址

3.strcat--------字符串追加

将src追加到des后面

char* my_strcat(char* des, const char* src)

①参数

  • des---------指向目标数组的指针
  • src----------要追加的字符串

②返回值

  • des的起始地址

③注意事项

  • 返回值类型为char*
  • 遇到\0结束
  • des字符串数组需要足够大,大到可以包含des和src数组的追加结果字符串
  • 不包含\0

strcat的模拟实现 - my_strcat

char* my_strcat(char* des, const char* src) {
	assert(des != NULL);
	assert(src != NULL);
	char* ret = des;
	while (*des) {
		des++;
	}
	while (*des++ = *src++) {
	}
	return ret;
}

strncat---------------字符串追加

将固定大小的src追加在des后面

char* my_strncat(char* des, const char* src,size_t size)

①参数

  • des--------指向目标数组的指针
  • src---------要追加的字符串
  • size--------要追加的最大字符数

②返回值

  • des的起始地址

③注意事项

  • 不将src中\0追加,但追加结束后 + 一个\0

4.strcmp—字符串的比较、

比较2字符串的ASCII值(一个字符一个字符比较,若相同,找下一个)

int my_strcmp(const char* str1, const char* str2)

①参数

  • str1---------要比较的字符串
  • str2---------要比较的字符串

②返回值
str函数_第1张图片

strcmp的模拟实现 - my_strcmp

int my_strcmp(const char* str1, const char* str2) {
while (*str1 == *str2) {	
if (*str1 = '\0') {
return 0;
}
str1++;
str2++;
}
return *str1 - *str2;
}

strncmp—字符串的比较

比较2字符串size长度的ASCII值

int my_strcmp(const char* str1, const char* str2,size_t size)

①参数

  • str1---------要比较的字符串
  • str2---------要比较的字符串
  • size---------要比较的最大字符数

②返回值
str函数_第2张图片

5.strstr-----查找字符串

将str2在str1中查找,并输出str2及之后的字符串

char* my_strstr(const charstr1, const charstr2)

①参数

  • str1---------要扫描的字符串
  • str2---------待查找字符串

②返回值

  • str1中str2出现时的指针

③注意事项

  • 若找不到,返回NULL指针

strstr的模拟实现 - my_strstr

char* my_strstr(const char*str1, const char*str2) {
const char* cp = str1;
const char* c = str2;
const char* s1 = str1;
const char* s2 = str2;
while (*cp) {
s1 = cp;
s2 = c;
while (*s1 == *s2 && *s1 && *s2) {
s1++;
s2++;
}
if (*s2 == '\0') {
return (char*)cp;
}
cp++;
}
return NULL;
}

6.strtok(str,sym)----查找特殊符号

在str1里查找stm(str2为各种字符,例:@),并记录初始地址

char * strtok ( char * str, const char * sym )

①参数

  • str1---------要扫描的字符串
  • str2---------待查找特殊符号

②返回值

  • str1中str2出现时的指针

③注意事项

  • 若找不到,返回NULL指针
  • 可以指定一个空指针,在这种情况下,该函数将继续扫描以前对该函数的成功调用结束的位置

strtok的应用举例:

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
int main()
{
    char str[] = "- This, a sample string.";
    char* pch;
    printf("Splitting string \"%s\" into tokens:\n", str);
    pch = strtok(str, ",.-");
    while (pch != NULL)
    {
        printf("%s\n", pch);
        pch = strtok(NULL, " ,.-");
    }
    return 0;
}

7.strerror(a)----------把错误码翻译成错误信息

char * strerror ( int errnum );

①参数

  • errnum----------------错误号

②返回值

  • 指向描述错误errnum的错误字符串的指针。

③注意事项

  • errno----------------C语言自带的全局变量,0就是没错,默认在其中放0
  • perror(“函数名::realloc”)–输出错误信息(函数名::realloc + “:” + 空格 + 错误信息)

8.strchr---------字符串中搜索一个字符

const charstrchr(const char str,int character)

①参数

  • str----------------要搜索的字符串
  • character-----------------要搜索的字符

②返回值

  • 这个字符出现在字符串中的位置指针

=====================================

你可能感兴趣的:(str函数,c语言,string)