温岭 网站建设网站建设品

张小明 2026/1/9 18:46:46
温岭 网站建设,网站建设品,网站可以做多少优化关键词,做一个公司官网需要多少钱在C语言的编程世界里#xff0c;对文本的精确处理是构建复杂程序的基础。字符与字符串操作看似简单#xff0c;却蕴含着诸多细节与潜在陷阱。本文将系统解析C标准库中核心的字符分类、转换及字符串操作函数#xff0c;不仅讲解其标准用法#xff0c;更通过关键函数的模拟实…在C语言的编程世界里对文本的精确处理是构建复杂程序的基础。字符与字符串操作看似简单却蕴含着诸多细节与潜在陷阱。本文将系统解析C标准库中核心的字符分类、转换及字符串操作函数不仅讲解其标准用法更通过关键函数的模拟实现揭示底层逻辑帮助你从“会用”到“懂原理”从而写出更健壮、高效的代码。目录1.字符分类函数2.字符转换函数3.strlen函数使用和模拟实现4.strcpy函数使用和模拟实现5.strcat函数使用和模拟实现6.strcmp函数使用和模拟实现7.strstr函数使用和模拟实现8.strncpy函数使用和模拟实现9.strncat函数使用和模拟实现10.strncmp函数使用和模拟实现1.字符分类函数C语言中有一系列的函数专门做字符分类的也就是一个字符属于什么类型的字符。这些函数的使用需要包含ctype.h头文件例如islower是判断参数部分是否是小写字母。通过返回值来说明是否是小写字母如果是小写字母就返回非0的整数如果不是则返回0。下题将小写字母转换为大写#include stdio.h #include ctype.h int main () { int i 0; char str[] Test String.\n; char c; while (str[i]) { c str[i]; if (islower(c)) c - 32; putchar(c); i; } return 0; }2.字符转换函数C语言提供了2个字符转换函数toupper ----- 小写转大写tolower ----- 大写转小写上面的代码我们使用-32完成小写转大小有了转换函数我们就可以直接使用tolower函数完成转换。#include stdio.h #include ctype.h int main() { int i 0; char str[] Test String.\n; char c; while (str[i]) { c str[i]; if (islower(c)) c toupper(c); putchar(c); i; } return 0; }3.strlen函数使用和模拟实现作用计算字符串的长度。注意字符串的长度不包括字符\0。返回值是int型#include stdio.h #include string.h int main() { const char* str1 abcdef; const char* str2 hijkl; if (strlen(str2) - strlen(str1) 0) { printf(str2str1\n); } else { printf(srt1str2\n); } return 0; }模拟实现//法一 int my_strlen(char* s) { assert(s); char* p s; while (*p) { p; } return p - s; } //法二 int my_strlen1(char* p) { int count 0; while (*p) { count; p; } return count; } int main() { char s1[] jakdhfbasdha; int ret my_strlen(s1); int ret1 my_strlen1(s1); printf(%d\n, ret); printf(%d\n, ret); return 0; }4.strcpy函数使用和模拟实现作用将源节点指向的C字符串复制到目的地指向的数组中包括终止的空字符并在该点停止。源字符串必须以 \0结束。会将源字符串中的 \0拷贝到目标空间。目标空间必须足够大以确保能存放源字符串。目标空间必须可修改。int main() { char* str1 abcdef; char* str2; // 把str1的内容拷贝到str2参数为字符数组指针 strcpy(str2, str1); printf(str2 %s\n, str2); // str2 abcdef return 0; }模拟实现char * my_strcpy(char* p, char* q) { assert(p); assert(q); while (*p *q) { p; q; } return p; } int main() { char str1[10]; char str2[] abcdef; my_strcpy(str1, str2); printf(%s, str1); return 0; }a5.strcat函数使用和模拟实现作用将字符串str2添加到字符串str1的尾部即拼接两个字符串。源字符串必须以\0结束。目标字符串中也得有 \0否则没办法知道追加从哪⾥开始。目标空间必须有足够的⼤能容纳下源字符串的内容。目标空间必须可修改。int main() { char str1[] abcde ; char str2[] fghij; strcat(str1, str2); printf(%s\n, str1); //abcde fghij return 0; }模拟实现char* my_strcat(char* p, const char* q) { while (*p) { p; } while (*q) { *p *q; p; q; } *p \0; return p; } int main() { char str1[20] abcdef; char* str2 hijklmn; my_strcat(str1, str2); printf(%s, str1); return 0; }6.strcmp函数使用和模拟实现作用比较两个字符串长度第⼀个字符串大于第⼆个字符串则返回大于0的数字第⼀个字符串等于第⼆个字符串则返回0第⼀个字符串小于第⼆个字符串则返回小于0的数字int main() { char str1[] abcdef; char str2[] abcdef; char str3[] abd; int ret1 strcmp(str1, str2); //ret10 int ret2 strcmp(str1, str3); //ret21 return 0; }模拟实现int my_strcmp(const char* str1, const char* str2) { while (*str1 *str2) { if (*str1 \0) return 0; str1; str2; } return *str1 - *str2; } int main() { char* str1 abcde; char* str2 abcdf; int ret my_strcmp(str1, str2); if (ret 0) { printf(str1str2\0); } else if (ret 0) { printf(str1str2\n); } else printf(str1str2\n); return 0; }7.strstr函数使用和模拟实现作用函数返回字符串str2在字符串str1中第⼀次出现的位置int main() { char str[] This is a simple string; char* pch; pch strstr(str, simple); printf(%s\n, pch); strncpy(pch, sample, 6); printf(%s\n, str); return 0; }模拟实现char* my_strstr(const char* p, const char* q) { assert(p); assert(q); char* ret (char*)p; char* p_cur NULL; char* q_cur NULL; while (*ret) { p_cur ret; q_cur (char*)q; while (*p_cur ! \0 *q_cur ! \0 *p_cur *q_cur) { p_cur; q_cur; } if (*q_cur \0) { return ret; } ret; } return NULL; } int main() { char str1[] Returns a pointer to the first occurrence of str2 in str1; char* str2 first; char* str3; str3my_strstr(str1, str2); printf(%s, str3); return 0; }8.strncpy函数使用和模拟实现作用拷贝num个字符从源字符串到目标空间。如果源字符串的长度小于num则考贝完源字符串之后在目标的后边追加0直到num个。int main() { char str1[] abc def; char str2[] jkl; strncpy(str1, str2, strlen(str2)); printf(%s\n, str1); //jkl def return 0; }模拟实现char* my_strncpy(char* destination, const char* source, size_t num) { int i 0; assert(source); assert(destination); char* p destination; while (i (int)num *source) { *destination *source; destination; source; i; } *destination \0; return p; } int main() { char str1[100]; //char* str2 abcdef hijkl mnopq; char* str2 abcd; my_strncpy(str1, str2, 12); printf(%s, str1); return 0; }9.strncat函数使用和模拟实现作用将source指向字符串的前num个字符追加到destination指向的字符串末尾再追加⼀个 \0字符。如果source 指向的字符串的长度小于num的时候只会将字符串中到\0的内容追加到destination指向的字符串末尾int main() { char str1[20]; char str2[20]; strcpy(str1, To be ); strcpy(str2, or not to be); strncat(str1, str2, 6); printf(%s\n, str1); //To be or not return 0; }模拟实现char* my_strncat(char* p, const char* q, int num) { assert(p); assert(q); char* pcur p; while (*pcur) { pcur; } int i 0; while (i num *q) { *pcur *q; i; } *pcur \0; return p; } int main() { char str1[20] abcde ; char* str2 fgh ii jkl mn; my_strncat(str1, str2, 6); printf(%s, str1); return 0; }10.strncmp函数使用和模拟实现作用比较str1和str2的前num个字符如果相等就继续往后比较最多比较num个字⺟如果提前发现不⼀样就提前结束大的字符所在的字符串大于另外⼀个。如果num个字符都相等就是相等返回0.int main() { char str1[] abcdef; char str2[] abcdef; char str3[] abd; int ret1 strncmp(str1, str2,3); //ret10 int ret2 strncmp(str1, str3,3); //ret20 return 0; }模拟实现int my_strncmp(const char* str1, const char* str2, size_t num) { assert(str1 str2); while (num 0 *str1 ! \0 *str2 ! \0 *str1 *str2) { str1; str2; num--; } if (num 0) { return 0; // 前num个字符全相等 } return *str1 - *str2; } int main() { char* s1 abcdef; char* s2 abcxyz; printf(%d\n, my_strncmp(s1, s2, 3)); //0 printf(%d\n, my_strncmp(s1, s2, 4)); //0 return 0; }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress建站教程简书直播系统平台搭建

三分钟掌握downkyicore音频提取:B站视频秒变高质量音乐库 【免费下载链接】downkyicore 哔哩下载姬(跨平台版)downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取…

张小明 2026/1/9 9:51:45 网站建设

常熟seo网站优化软件wordpress怎样电影导航

模型轻量化设计使其能在消费级显卡上顺畅运行 在如今的AI应用浪潮中,语音识别早已不再是实验室里的高冷技术。从智能音箱到会议记录,越来越多的场景呼唤“即说即识”的本地化语音能力。然而现实却常常令人沮丧:大多数开源ASR系统动辄需要8GB以…

张小明 2026/1/9 3:23:35 网站建设

专业建设思路搜索引擎优化培训免费咨询

利用命令和脚本管理计算机及服务器角色配置 1. PowerShell 命令与脚本基础 1.1 命令参数选项 在 PowerShell 中,有一些常用的命令参数选项: - -casesensitive :执行区分大小写的匹配。如果测试的值不是字符串,此选项将被忽略。 - -file :从文件而不是语句获取输入…

张小明 2026/1/8 19:18:56 网站建设

市桥网站建设培训互联网站建设维护有关岗位

3步搞定Node.js版本管理:nvm-desktop桌面应用完整教程 【免费下载链接】nvm-desktop 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-desktop 还在为不同项目需要切换Node.js版本而头疼吗?nvm-desktop桌面应用让你轻松管理多个Node.js版本&am…

张小明 2026/1/9 16:03:15 网站建设

看手机的网站叫什么网页设计策划案案模板

GitHub Gist快速分享IndexTTS 2.0代码片段 在短视频创作、虚拟主播直播和AIGC内容爆发的今天,一个常被忽视却极其关键的问题浮出水面:配音与画面节奏对不上。你精心剪辑的画面配上AI生成的语音,结果语速忽快忽慢,情绪不到位&#…

张小明 2026/1/9 9:29:32 网站建设

为什么做网站会被批捕胶州网站建设哪家好

一、开篇:当算子开发成为“芯片战争”的新战场2024年Q4,华为昇腾开发者大会现场,一段震撼的实时演示引发掌声雷动:Ascend C编写的自定义算子,在910B芯片上以3.2倍于TensorRT的吞吐量完成千卡级模型推理。这不仅是数字的…

张小明 2026/1/9 11:39:59 网站建设