广州网站建设知名 乐云践新泰安网站制作推广

张小明 2026/1/2 5:15:53
广州网站建设知名 乐云践新,泰安网站制作推广,wordpress.html,全民代理平台前言#xff1a; C语言的标准库中有许多字符函数与字符串函数#xff0c;其存在能够大大减轻许多编程压力#xff0c;因此#xff0c;充分了解并能够熟练运用字符函数与字符串函数是很有必要的#xff0c;在本文中#xff0c;我们将对于其进行深入了解 正文开始#xff…前言C语言的标准库中有许多字符函数与字符串函数其存在能够大大减轻许多编程压力因此充分了解并能够熟练运用字符函数与字符串函数是很有必要的在本文中我们将对于其进行深入了解正文开始一.字符分类函数C语言中有一类函数专门用于字符分类使用时需要包含一个头文件ctype.h函数参数符合条件就返回真非0具体函数如下1.iscntrl—任何控制字符2.isspace—空白字符3.isdigit—十进制数字4.isxdigit—十六进制数字5.islower—小写字母a-z6.isupper—大写字母A-Z7.isalpha—字母a-z或者A-Z8.isalnum—字母或者数字9.ispunct—标点符号非任意字母图形或者数字10.isgraph—任何图形字符11.isprint—任何可打印字符包括图形与空白字符示例1.#includectype.hintmain(){intrisdigit(a);//r0;printf(%d\n,r);if(r){printf(是十进制字符\n);}else{printf(不是十进制字符\n);}return0;}输出结果为不是十进制字符intmain(){intrislower(a);//r2;printf(%d\n,r);if(r){printf(是小写字符\n);}else{printf(不是小写字符\n);}return0;}输出结果为是小写字符intmain(){//小写字符转大写chararr[]I am a Chinese;inti0;for(i0;arr[i]!\0;i){intrislower(arr[i]);if(r){arr[i]-32;//a-A32}printf(%c,arr[i]);}return0;}输出结果为I AM A CHINESE二.字符转化函数注仅适用于字母大写转小写tolower小写转大写toupper1次只能够转1个示例intmain(){//小写字符转大写chararr[]I am a Chinese;inti0;for(i0;arr[i]!\0;i){intrislower(arr[i]);if(r){arr[i]toupper(arr[i]);}printf(%c,arr[i]);}return0;}输出结果为I AM A CHINESE字符转换函数的模拟实现:以toupper函数为例charmy_toupper(charx){if(xaxz){x-32;}returnx;}intmain(){//小写字符转大写chararr[]i am a chinese;inti0;for(i0;arr[i]!\0;i){intrislower(arr[i]);if(r){arr[i]my_toupper(arr[i]);}printf(%c,arr[i]);}return0;}该函数也能够行使字符转换功能三.strlen函数前面已讲详情请看指针–习题练习注返回类型size_t–无符号整型–必定大于等于0示例intmain(){if((strlen(abc)-strlen(abcdef))0){printf(\n);}else{printf(\n);}return0;}输出结果为证明返回数字大于0即为无符号整型strlen函数的另一种模拟实现(第一种在指针–习题练习)size_tmy_strlen(constchar*str){if(*str!\0){return1my_strlen(str1);}else{return0;}}四字符串函数1.strcpy功能字符串拷贝拷贝到字符串中的\0为止参数两字符串的首元素地址注1.以\0结束2.\0也会被拷贝3.目标空间必须足够大4.目标空间必须可被修改即arr2初始化时不能是常量字符串示例intmain(){chararr1[]Hello world!;chararr2[]{0};//arr2 arr1;//错误arr2代表地址不可修改//数组名为地址地址是一个编号但地址是常量无法修改char*retstrcpy(arr2,arr1);printf(%s\n,arr2);printf(%s\n,ret);return0;}输出结果为Hello world!Hello world!strcpy函数的模拟实现两个条件1.能够将y代表数组的内容拷贝到x中2.能够返回y数组的首元素地址#includeassert.hchar*my_strcpy(char*x,constchar*y){//x---指针指向目的空间 //y--指针指向源头数据char*retx;assert(yx);//两者均不能为空指针while(*x*y){;}returnret;}intmain(){chararr1[]Hello world!;chararr2[20]xxxxxxxxx;my_strcpy(arr2,arr1);printf(%s\n,arr2);return0;}2.strcat–字符串追加char* strcat(charx,const chary)x----指针指向目的空间y–指针指向源头数据返回目标空间起始地址注1.源字符串x必须以\0结束2.目标字符串中也应有\0(从\0开始追加)3.目标字符串应足够大能够容纳源字符串内容4.目标字符串可修改示例intmain(){chararr1[20]hello \0xxxxxxxx;chararr2[]world!;char*rstrcat(arr1,arr2);printf(%s\n,arr1);printf(%s\n,r);return0;}输出结果为hello world!strcat函数的模拟实现两个条件1.能够将y代表数组的内容追加到x中2.能够返回x数组的首元素地址#includeassert.hchar*my_strcat(char*x,char*y){assert(yx);//1.寻找\0char*rx;while(*x!\0){x;}while(*x*y){;}returnr;}intmain(){chararr1[20]hello \0xxxxxxxx;chararr2[]world!;char*rmy_strcat(arr1,arr2);printf(%s\n,arr1);printf(%s\n,r);return0;}3.strcmp—字符串比较主要内容前面已讲功能从两个字符串首字母开始比较ASCII码值若相同则比较下一字母参数char* a,char* b返回值ab 返回t0 ab 返回t0示例intmain(){chararr1[]abcdef;chararr2[]abq;intrstrcmp(arr1,arr2);printf(%d\n,r);if(r0){printf(arr1arr2\n);}return0;}输出结果为arr1arr2strcmp函数的模拟实现intmy_strcmp(constchar*a,constchar*b){assert(ab);while(*a*b){if(*a\0){return0;//相等}a;b;}if(*a*b){return1;}else{return-1;}}intmain(){chararr1[]abcdef;chararr2[]abq;intrmy_strcmp(arr1,arr2);printf(%d\n,r);if(r0){printf(arr1arr2\n);}return0;}输出结果一致另外:介绍三个类似函数strncpy—strcpystrncat—strcatstrncmp—strcmp长度受限—长度不受限前者相较于后者多出一个参数size_t num,意义为限制拷贝的字符个数主要优点后者相较于前者更加灵活安全示例intmain(){chararr1[]abcdefg;//遇到\0提前结束chararr2[]xxxxxxxxxxxx;//strncpy(arr2, arr1, 5);//最多拷贝5个字符//printf(%s, arr2);//strncat(arr2, arr1, 5);//最多追加5个字符//printf(%s, arr2);intrstrncmp(arr2,arr1,5);//最多比较5个字符printf(%s\n,arr2);printf(%d,r);//1---abreturn0;}其余内容重复不再讲解4.strstr函数功能在一个字符串中寻找另一个字符串第一次出现位置结果找到返回出现位置指针找不到返回NULL示例intmain(){chararr1[]heheabcdefgh;chararr2[]def;char*pstrstr(arr1,arr2);if(p!NULL){printf(找到了%s\n,p);//打印找到位置后的字符串}else{printf(未找到\n);}return0;}strstr函数的模拟实现两种1.char*my_strstr(constchar*a,constchar*b){char*p1a;while(*p1!*b){p1;}size_tlen0;char*p2b;while(*b!\0){b;len;}if(strncmp(p1,p2,len)0){if(*p1!\0){returnp1;}else{returnNULL;}}else{returnmy_strstr(p11,b);}}自己写的char*my_strstr(constchar*a,constchar*b){char*pa;char*s1NULL;char*s2NULL;//特殊场景if(*p\0){returna;}while(*p){s1p;s2b;while(*s1*s2*s1*s2){s1;s2;}if(*s2\0){returnp;}p;}returnNULL;}老师教的:暴力查找其他方式KMP5.strtok函数char * strtok(char * x,char * y)功能1.分割字符串//根据y中的符号//调用一次分割一次2.修改原始字符串分割符号被修改为\03.返回首元素地址示例intmain(){chararr[]zpwyeah.net;charsep[].;charbuf[20]{0};strcpy(buf,arr);char*pNULL;//1.for(pstrtok(buf,sep);p!NULL;pstrtok(NULL,sep)){printf(%s\n,p);}//2.//char* p strtok(buf, sep);//printf(%s\n, p);//zpw//p strtok(NULL, sep);//yeah//printf(%s\n, p);//p strtok(NULL, sep);//net//printf(%s\n, p);//p strtok(NULL, sep);//NULL//printf(%s\n, p);return0;}6.strerror函数char*strerror(int errnum);需要包含头文件string.hC语言库函数在使用发生错误时会将一个错误码记录到errno的变量中功能1.可以通过参数部分的errnum表示错误码得到对应的错误信息并返回错误信息字符串首字符地址2.strerror函数只针对标准库中函数方式错误后设置错误码的转换参数errnum示例intmain(){inti0;for(i0;i10;i){printf(%d:%s\n,i,strerror(i));}//strerror函数将错误码转化为错误信息return0;}转换形式0 : No error 无错误1 : Operation not permitted错误被拒绝2 : No such file or directory 无该文件或文件夹3 : No such process 没有进程4 : Interrupted function call 函数调用被中断5 : Input / output error :输入/输出错误6 : No such device or address :无该设备或地址7 : Arg list too long ……8 : Exec format error9 : Bad file descriptor后面不再赘述我们来看一个例子C语言可打开文件该过程称为fopen若以读的方式打开则文件必须存在若不存在打开失败open函数会将错误码放在errno中同时函数返回NULL如下intmain(){FILE*pffopen(data.txt,r);if(pfNULL){printf(错误码为:\n%s\n,strerror(errno));printf(该文件不存在打开失败\n);return1;}//读文件//………………//关闭文件fclose(pf);pfNULL;return0;}7.perror函数:void perror(char*str);功能记录错误码打印错误信息 一体化perror(xxx) --xxx:错误信息缺点不够灵活优点足够方便具体功能前面已经分开介绍故不再赘述后记通过以上示例我们对于字符与字符串函数有了一个较为系统的认识通过不断进行练习熟悉度也会提高下一节我们将认识另一种新的C语言函数内存函数。那么本节内容到此结束我们下节再见
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

windows2012做网站黑龙江建设网教育官网

【Comtos Linux 研究的科学与哲学】人们谈论到Unix/Linux的哲学。 基本都是谈论其设计哲学。 如: 1.小即是美。 2.让程序只做好一件事。 3.可移植性比效率更重要。哲学的基本论域主要包括‌, 本体论‌、‌认识论‌、‌ 价值论‌、和‌方法论‌, 四个核心…

张小明 2025/12/28 9:00:36 网站建设

wordpress设置文章第一张网站如何做关键词seo

洪水、热浪、供应链冲击——气候风险早已不再只是环境议题,而是关乎企业生存的运营问题。对于全球企业而言,可持续发展不仅是减排,更是确保在任何扰动发生时保持韧性。由 The Open Group 制定的 TOGAF 标准提供了企业长期忽视的一项关键能力&…

张小明 2025/12/28 9:00:34 网站建设

在线网站推荐几个网站诚信备案

body-parser是Node.js中最流行的请求体解析中间件,专门用于处理HTTP请求中的数据解析。作为Express框架的核心组件之一,它能够自动解析JSON、URL编码和文本格式的请求体,让你的Web应用开发变得更加简单高效。 【免费下载链接】body-parser No…

张小明 2025/12/28 9:00:31 网站建设

优质网站建设服务有哪些免费发布信息的平台

Langflow 自定义组件开发全指南 在 AI 应用快速迭代的今天,低代码平台的价值愈发凸显。Langflow 正是其中的佼佼者——它将 LangChain 的复杂性封装成可视化的节点流,让开发者通过拖拽即可构建智能体、RAG 系统甚至完整的对话引擎。但真正决定其边界上限…

张小明 2025/12/28 9:00:29 网站建设

西安建站套餐遵义新闻在线第一网

文章对比了传统RAG与Agentic RAG技术的核心差异。传统RAG采用简单线性架构,静态检索策略,响应快但准确性有限;Agentic RAG引入智能代理系统,支持动态检索、多步推理和信息验证,准确性高但成本较高。前者适合简单查询和…

张小明 2025/12/28 5:10:22 网站建设

源码出售网站顺德网站开发招聘

Kotaemon如何避免生成内容的幻觉问题? 在企业级AI应用日益深入的今天,一个看似智能的回答背后是否可靠,往往决定了系统能否真正落地。想象这样一个场景:财务人员向智能助手询问“上季度差旅报销总额是多少?”&#xff…

张小明 2025/12/28 10:19:38 网站建设