当前位置: 首页 > news >正文

企业网站排名优化哪家好91手表网

企业网站排名优化哪家好,91手表网,个人业务网上平台,黄页推广平台有哪些文章目录 前言1.求字符串长度1.1 字符串长度函数#xff1a;strlen模拟实现 2.长度不受限制的字符串函数2.1 字符串拷贝函数#xff1a;strcpy模拟实现 2.2 字符串连接函数#xff1a;strcat模拟实现 2.3 字符串比较函数#xff1a;strcmp模拟实现 3.长度受限制的字符串函数… 文章目录 前言1.求字符串长度1.1 字符串长度函数strlen模拟实现 2.长度不受限制的字符串函数2.1 字符串拷贝函数strcpy模拟实现 2.2 字符串连接函数strcat模拟实现 2.3 字符串比较函数strcmp模拟实现 3.长度受限制的字符串函数3.1strncpy3.2strncat3.3strncmp 4.字符串查找4.1字符串查找函数strstr模拟实现 4.2字符串分割函数strtok 5.错误信息报告5.1错误信息报告函数strerror 6.内存操作函数6.1 内存操作函数memcpy 和 memmovememcpy模拟实现memmove模拟实现 6.2 内存操作函数memset6.3 内存比较函数memcmp 前言 在C语言中字符和字符串是常用的数据类型。然而C语言并没有专门的字符串类型所有字符串都是通过字符数组或字符串常量来表示。为了处理这些字符串C语言提供了许多强大的库函数。本文将详细介绍这些常用的字符和字符串处理函数以及它们的使用方法和注意事项。 1.求字符串长度 1.1 字符串长度函数strlen strlen 函数用来计算字符串的长度。它返回字符串中不包含终止字符 \0 的字符数量。 size_t strlen(const char *str);使用示例 #include stdio.h #include string.hint main() {const char *str Hello, world!;printf(Length of the string: %zu\n, strlen(str)); // 输出13return 0; }模拟实现 #includestdio.h #includeassert.h //#includestring.hint my_strlen(const char* str) {assert(str);int count 0;while (*str) {count;}return count; } int main() {char arr[] abcdef;int ret my_strlen(arr);printf(%d, ret);return 0; }2.长度不受限制的字符串函数 2.1 字符串拷贝函数strcpy strcpy 函数将源字符串拷贝到目标字符串包括终止符 \0。 char *strcpy(char *destination, const char *source);注意事项 源字符串必须以 \0 结束。目标空间必须足够大以容纳源字符串。 使用示例 #include stdio.h #include string.hint main() {char dest[20];strcpy(dest, Hello);printf(Destination string: %s\n, dest); // 输出Helloreturn 0; }模拟实现 #includestdio.h //#includestring.h #includeassert.hvoid my_strcpy(char* dest,const char* source) {assert(dest source);while (*dest*source) {;} }int main() {char arr1[] abcdefg;char arr2[] hijklmn;my_strcpy(arr1, arr2);printf(%s, arr1);return 0; }2.2 字符串连接函数strcat strcat 函数将源字符串追加到目标字符串的末尾。它会覆盖目标字符串末尾的 \0并将新的字符串结束符 \0 放置在新字符串的末尾。 char *strcat(char *destination, const char *source);使用示例 #include stdio.h #include string.hint main() {char dest[20] Hello, ;strcat(dest, world!);printf(Concatenated string: %s\n, dest); // 输出Hello, world!return 0; }模拟实现 #includestdio.h //#includestring.h #includeassert.hchar* my_strcat(char* dest, const char* source) {char* ret dest;while (*dest) {dest;}while (*dest *source) {;}return ret; }int main() {char arr1[20] abcdf;char arr2[10] ghijk;my_strcat(arr1, arr2);printf(%s, arr1);return 0; }2.3 字符串比较函数strcmp strcmp 函数比较两个字符串的大小。它返回一个整数根据两个字符串的字典顺序进行比较。 int strcmp(const char *str1, const char *str2);如果 str1 大于 str2返回大于 0 的值。如果 str1 等于 str2返回 0。如果 str1 小于 str2返回小于 0 的值。 使用示例 #include stdio.h #include string.hint main() {const char *str1 abc;const char *str2 abd;int result strcmp(str1, str2);if (result 0) {printf(str1 is less than str2\n);} else if (result 0) {printf(str1 is greater than str2\n);} else {printf(str1 is equal to str2\n);}return 0; }模拟实现 #includestdio.h //#includestring.h #includeassert.hint my_strcmp(const char* str1,const char* str2) {assert(str1 str2);while (*str1 *str2) {str1;str2;}return *str1 - *str2; }int main() {char arr1[] abcd;char arr2[] abcf;int ret my_strcmp(arr1, arr2);if (ret 0){printf(\n);}else if (ret 0) {printf(\n);}elseprintf(\n);return 0; }3.长度受限制的字符串函数 3.1strncpy char * strncpy ( char * destination, const char * source, size_t num );拷贝num个字符从源字符串到目标空间。如果源字符串的长度小于num则拷贝完源字符串之后在目标的后边追加0直到num个。 3.2strncat char * strncat ( char * destination, const char * source, size_t num );在目标字符串结尾追加源字符串前num个字符 3.3strncmp int strncmp ( const char * str1, const char * str2, size_t num );比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。 4.字符串查找 4.1字符串查找函数strstr strstr 函数查找一个字符串在另一个字符串中首次出现的位置。如果找到则返回该位置的指针如果未找到则返回 NULL。 char *strstr(const char *haystack, const char *needle);使用示例 #include stdio.h #include string.hint main() {const char *str This is a simple string;const char *substr simple;char *result strstr(str, substr);if (result ! NULL) {printf(Found substring: %s\n, result); // 输出simple string}return 0; }模拟实现 #includestdio.h //#includestring.h #includeassert.hchar* my_strstr(const char* str1, const char* str2) {assert(str1 str2);if (*str2 \0) {return (char*)str1;}const char* s1 NULL;const char* s2 NULL;const char* cp str1;while (cp) {s1 cp;s2 str2;while (*s1 !\0 *s2 ! \0 * s1 *s2) {s1;s2;}if (*s2 \0)return (char*)cp;cp;}return NULL; }int main() {char* p1 abbbcdef;char* p2 ba;char* ret my_strstr(p1, p2);if (ret NULL) {printf(Ҳ\n);}else {printf(%s, ret);}return 0; }4.2字符串分割函数strtok strtok 函数将字符串分割成多个标记每次调用 strtok 返回下一个标记。当没有更多标记时返回 NULL。 char *strtok(char *str, const char *delim);注意事项 strtok 会修改原始字符串因此一般会拷贝字符串后再进行分割。每次调用 strtok 返回字符串中的下一个标记后续调用需要将第一个参数设为 NULL。 使用示例 #include stdio.h #include string.hint main() {char str[] Hello, world! C programming;char *token strtok(str, ,!);while (token ! NULL) {printf(Token: %s\n, token);token strtok(NULL, ,!);}return 0; }5.错误信息报告 5.1错误信息报告函数strerror strerror 函数根据错误码返回相应的错误信息。 char *strerror(int errnum);使用示例 #include stdio.h #include string.h #include errno.hint main() {FILE *file fopen(nonexistent.txt, r);if (file NULL) {printf(Error: %s\n, strerror(errno));}return 0; }6.内存操作函数 6.1 内存操作函数memcpy 和 memmove memcpy 用于从源内存区域复制指定字节的数据到目标内存区域。memmove 与 memcpy 类似但它处理内存重叠的情况。 void *memcpy(void *dest, const void *src, size_t n); void *memmove(void *dest, const void *src, size_t n);使用示例 #include stdio.h #include string.hint main() {char src[] This is a test.;char dest[20];memcpy(dest, src, strlen(src) 1);printf(Copied string: %s\n, dest);return 0; }memcpy模拟实现 #includestdio.h #includestring.h #includeassert.hvoid* my_memcpy(void* dest, const void* source, size_t num) {assert(dest source);void* ret dest;while (num--){*(char*)dest *(char*)source;dest (char*)dest 1;source (char*)source 1;}return ret; }void test1() {int arr1[10] { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] { 0 };my_memcpy(arr1, arr2, 20); }int main() {test1();return 0; }memmove模拟实现 #includestdio.h #includestring.h #includeassert.hvoid* my_memmove(void* dest, const void* source, size_t num) {assert(dest source);void* ret dest;if (dest source) {while (num--) {*(char*)dest *(char*)source;dest (char*)dest 1;source (char*)source 1;}}else {while (num--) {*((char*)dest num) *((char*)source num);}}return ret; }void test1() {int arr[10] {1,2,3,4,5,6,7,8,9,10};my_memmove(arr3, arr, 20); }int main() {test1();//test2();return 0; }6.2 内存操作函数memset memset 函数用于将一块内存区域的所有字节设置为指定的值。通常用于初始化内存或将内存区域清零。 void *memset(void *s, int c, size_t n);s指向内存区域的指针。c要设置的值以无符号字符形式。n要设置的字节数。 注意事项 memset 函数将指定的字节值填充到内存区域中可以用于初始化数组或结构体的值。由于是按字节处理因此它适用于任何类型的内存块。 使用示例 #include stdio.h #include string.hint main() {char str[20];memset(str, A, sizeof(str) - 1); // 将前19个字节设置为Astr[19] \0; // 确保字符串以\0结束printf(The string is: %s\n, str); // 输出AAAAAAAAAAAAAAAAAAAreturn 0; }在上面的例子中memset 将数组 str 的前 19 个字节设置为字符 A并在最后设置为字符串的终止符 \0确保它成为一个有效的字符串。 应用场景 初始化数组或结构体在动态分配内存或创建数据结构时使用 memset 可以方便地初始化内存将内存区域填充为特定的值。例如常见的做法是使用 memset 来清零结构体或数组中的内容。 清空敏感数据当处理涉及敏感信息如密码、密钥的程序时使用 memset 可以确保这些数据在使用后被立即清除以减少安全隐患。 内存清零在程序需要清除缓存或重置数据时memset 可以帮助快速设置内存区域为零。 6.3 内存比较函数memcmp memcmp 函数用于比较两个内存区域的内容。它按字节逐一比较两个内存块并根据比较结果返回一个整数值。 int memcmp(const void *ptr1, const void *ptr2, size_t num);ptr1指向第一个内存区域的指针。ptr2指向第二个内存区域的指针。num要比较的字节数。 返回值 如果两个内存区域的内容完全相同则返回 0。如果 ptr1 指向的内存块大于 ptr2则返回大于 0 的值。如果 ptr1 指向的内存块小于 ptr2则返回小于 0 的值。 使用示例 #include stdio.h #include string.hint main() {char buffer1[] DWgaOtP12df0;char buffer2[] DWGAOTP12DF0;int result memcmp(buffer1, buffer2, sizeof(buffer1));if (result 0) {printf(%s is greater than %s.\n, buffer1, buffer2);} else if (result 0) {printf(%s is less than %s.\n, buffer1, buffer2);} else {printf(%s is the same as %s.\n, buffer1, buffer2);}return 0; }输出 DWgaOtP12df0 is greater than DWGAOTP12DF0.在这个示例中memcmp 比较了两个字符数组 buffer1 和 buffer2 的内容。由于在比较过程中DWgaOtP12df0 的字节值大于 DWGAOTP12DF0所以返回的值大于 0。 注意事项 按字节比较memcmp 是按字节逐一比较内存区域的内容因此它不会考虑数据的类型。如果要比较更复杂的数据类型例如结构体需要保证结构体成员的字节表示没有问题。内存重叠问题与 memcpy 不同memcmp 不会处理内存重叠的情况它只比较内存的内容而不考虑是否存在重叠。因此在使用 memcmp 时要确保比较的内存区域不会重叠。 应用场景 内存区域比较memcmp 适用于需要比较两个内存区域是否相等的场景例如在数据校验或加密算法中经常使用它来比较数据块的内容。查找差异当需要查找两个内存块中不同的位置时可以使用 memcmp 来快速发现差异。
http://www.hkea.cn/news/14551481/

相关文章:

  • 作文网站源码网页特效源码网站
  • 安全网站建设的研究方法网页制作与网站开发用的软件
  • 网站推广优化哪家公司好教育系统网站备案
  • 专门做详情页的网站设计平台化
  • 网站建设步骤电脑wordpress 虾米音乐
  • mvc 做网站中国建设人才认证服务平台
  • 做汽车团购的网站建设关键词排名优化怎么做
  • 深色网站大良营销网站建设资讯
  • 做网站端口内容无法替换whois skxy wordpress
  • 做淘客的网站关键词有哪些廊坊哪里有做阿里巴巴网站的
  • decorum wordpress网站文章来源seo
  • 公司网站建设建议先网站开发后软件开发好
  • 做百度网站公考在哪个网站上做试题
  • 制作网站软件都在什么公司广西八桂职教网官网
  • 昌吉州建设局网站wordpress 4.8正式版
  • 全球外贸网站制作教程网站推广营销
  • 制作网站中英文字体不能为基于wordpress的商城系统
  • 哪个网站可以预约做头发的微信公众号开发平台登录
  • 网站开发的需求文档网站赚钱的方式
  • 哪家做网站做的好phpstudy怎么创建网站
  • 免费刷赞网站推广qq免费wordpress修改生效
  • 做网站 设备建立公司网站的流程
  • 网站广告案例淘宝站外引流推广方法
  • 奇胜网络 邯郸网站建设西安网站开发费用
  • 思明自助建站软件免费游戏直接进入
  • 义乌哪里有学做网站的深圳智慧建设控股有限公司网站
  • 做一个招聘信息的网站_用什么做网站的软件wordpress是不是很慢
  • 周至做网站的公司什么是网站
  • 高端网站设计需求有哪些做网站的不给源文件
  • 拼团手机网站开发中山企业网站建设公司