C语言及程序设计提高例程-31 编制自己的字符串函数

2024-03-03 08:32

本文主要是介绍C语言及程序设计提高例程-31 编制自己的字符串函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

贺老师教学链接  C语言及程序设计提高 本课讲解


字符串复制

#include <stdio.h>
char *scopy(char *str1, const char *str2);
int main()
{char s1[50];scopy(s1, "I am happy.");printf("%s\n", s1);return 0;
}
char *scopy(char *str1, const char *str2)
{int i=0,j=0;while(str2[j]!='\0'){str1[i]=str2[j];i++;j++;}str1[i]='\0';return str1;
}


另解:字符串复制
#include <stdio.h>
char *scopy(char *str1, const char *str2);
int main()
{char s1[50];scopy(s1, "I am happy.");printf("%s\n", s1);return 0;
}char *scopy(char *str1, const char *str2)
{char *p1=str1;const char *p2=str2;while(*p2!='\0'){*p1=*p2;p1++;p2++;}*p1='\0';return p1;
}


比较字符串(忽略大小写)
#include <stdio.h>
#include <ctype.h>
int scomp(const char *str1, const char *str2);
int main()
{printf("%d\n", scomp("PFXa", "pfXA"));printf("%d\n", scomp("PF12", "pF34"));printf("%d\n", scomp("Bxb3", "bdeF"));return 0;
}int scomp(const char *str1, const char *str2)
{const char *p=str1,*q=str2;while(tolower(*p)==tolower(*q)&&*p!='\0'&&*q!='\0'){p++;q++;}if (tolower(*p)>tolower(*q))return 1;else if(tolower(*p)<tolower(*q))return -1;elsereturn 0;
}


另解:比较字符串(忽略大小写)
#include <stdio.h>
int scomp(const char *str1, const char *str2);
int main()
{printf("%d\n", scomp("PFXa", "pfXA"));printf("%d\n", scomp("PF12", "pF34"));printf("%d\n", scomp("Bxb3", "bdeF"));return 0;
}int scomp(const char *str1, const char *str2)
{int i=0, j=0;char c1, c2;do{c1=(str1[i]>='A'&&str1[i]<='Z')?str1[i]+32:str1[i];c2=(str2[i]>='A'&&str2[i]<='Z')?str2[i]+32:str2[i];i++;j++;}while(c1==c2&&c1!='\0'&&c2!='\0');if (c1>c2)return 1;else if(c1<c2)return -1;elsereturn 0;
}


统计单词个数
#include <stdio.h>
int wordnum(const char *str);
int main()
{char s[81];gets(s);printf("\"%s\" have %d words.\n", s, wordnum(s));return 0;
}
/*
关键:word代表一种状态
word==0时,之前读到了空格
- 现读到空格,word保持0
- 现读到了非空格,单词数增1,word置为1
word==1时,之前读到的是非空格
- 现读到空格,word重置为0
- 现读到了非空格,继续读
*/
int wordnum(const char *str)
{int i,num=0,word=0;  //word为0,代表现在并不for(i=0; (*(str+i)!='\0'); i++){if (*(str+i)==' ')word=0;else if (word==0){word=1;num++;}}return num;
}


这篇关于C语言及程序设计提高例程-31 编制自己的字符串函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769062

相关文章

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以