Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to use string function and memory function in C language

2025-04-06 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)05/31 Report--

本文小编为大家详细介绍"C语言字符串函数和内存函数怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言字符串函数和内存函数怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

字符串函数尺子不受限制的字符串函数strlen

size_t strlen ( const char * str )

求字符串尺子:

字符串以'\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )

参数指向的字符串必须要以 '\0' 结束

注意函数的返回值为size_t,是无符号的

例子如下:计算Hello World! 的字符数

strcpy

char* strcpy(char * destination, const char * source )

用法:将 source 指向的 C 字符串复制到 destination 指向的数组中,包括终止空字符(并在该点停止)

注意:

源字符串必须以 '\0' 结束。

会将源字符串中的 '\0' 拷贝到目标空间。

目标空间必须足够大,以确保能存放源字符串。

目标空间必须可变

strcpy的实现:

char * strcpy(char *dest, const char*src){ char *ret = dest;//记录下字符串dest的起始地址 assert(dest != NULL); assert(src != NULL); while((*dest++ = *src++))//copy { ; } return ret;//返回起始地址}strcat

char * strcat ( char * destination, const char * source )

用法:将源字符串的副本附加到目标字符串。也就是将src字符串接在dest的字符串后面,并且src字符串的第一个字符覆盖dest的最后一个字符(\0),并且在接好的字符串后加上'\0'

注意:

源字符串必须以 '\0' 结束。

目标空间必须有足够的大,能容纳下源字符串的内容。

目标空间必须可修改。

strcat的实现:

char * strcat(char *dest, const char*src){ char *ret = dest; assert(dest != NULL); assert(src != NULL);//找到目标空间 while(*dest) { dest++; }//拷贝 while((*dest++ = *src++)) { ; } return ret;}strcmp

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

用法:此函数开始比较每个字符串的第一个字符。如果它们等于每个其他,它会继续以下对,直到字符不同或终止达到空字符。

注意:

第一个字符串大于第二个字符串,则返回大于0的数字

第一个字符串等于第二个字符串,则返回0

第一个字符串未来第二个字符串,则返回未来0的数字

strcmp的实现:

int strcmp(const char* st1, const char* st2){ int ret = 0; while (*st1 == *st2) { st1++; st2++; if(*st1 == *st2 && *st1 == '\0') return ret;//相等的时候返回0 } return *st1 - *st2;尺子受限制的字符串函数介绍strncpy

拷贝num个字符从源字符串到目标空间。

如果源字符串的尺子未来num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

strncat

将源的前 num 个字符附加到目标,加上一个终止空字符。

如果 source 中 C 字符串的尺子未来 num,则只有到终止符的内容空字符被复制

strncmp

比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。

字符串查找以及错误报告strstr

char * strstr ( const char *str1, const char * str2)

返回指向 str1 中第一次出现 str2 的指针,如果 str2 不属于字符串str1就返回空指针

strstr的实现:

char* strstr(const char* st1, const char* st2){ //st1,st2标注起始位置 char* s1 = st1; char* s2 = st2; char* cur = s1; while (*cur) { s1 = cur; while (*s1 == *s2 && *s1 && *s2) { s1++; s2++; } if (*s2 == '\0') { return cur; } cur++; } return NULL;//找不到}strtok

用法:根据给出的字符将字符串分隔开

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

sep参数是个字符串,定义了用作分隔符的字符集合

第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标

记strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:

strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容

并且可修改。)

strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串

中的位置。

strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标

记。

如果字符串中不存在更多的标记,则返回 NULL 指针

这里演示一下:

strerror

char * strerror ( int errnum )

返回错误码,所对应的错误信息

这里头文件为#include

演示如下;

内存操作函数memcpy

void * memcpy ( void * destination, const void * source, size_t num )

用法:函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。

这个函数在遇到 '\0' 的时候并不会停下来。

如果source和destination有任何的重叠,复制的结果都是未定义的。

memcpy的实现:

void* memcpy(void* dest, const void* src, size_t sz){ assert(dest && src); void* ret = dest; int count = sz; while (count--) { *(char*)dest = *(char*)src;//拷贝 dest = (char*)dest + 1; src = (char*)src + 1; } return ret;}memmove

void * memmove ( void * destination, const void * source, size_t num )

用法:和memcpy的用法差不多,和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。

如果源空间和目标空间出现重叠,就得使用memmove函数处理

memmove的实现:

void* memmove(void* dest, const void* src, size_t sz){ assert(dest && src);//断言 int* ret = dest; int count = sz; if (*(char*)dest > *(char*)src && *(char*)dest

< *(char*)src + count) { //后->

ago while (count--) { *((char*)dest + count) = *(char*)src + count; } } else { //front-> rear while (count--) { *(char*)dest = *(char*)src; dest = (char*)dest + 1; src = (char*)src + 1; } } return ret;}memcmp

int memcmp ( const void * ptr1,const void * ptr2,size_t num )

Usage: Compare num bytes starting from ptr1 and ptr2 pointers

Return value:

Read here, this article "C language string function and memory function how to use" article has been introduced, want to master the knowledge point of this article also need to practice to understand, if you want to know more related content of the article, welcome to pay attention to the industry information channel.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report