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

相关文章

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注