C语言及程序设计提高例程-31 编制自己的字符串函数
2015-02-10 21:41
330 查看
贺老师教学链接 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; else return 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; else return 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; }
相关文章推荐
- 第8周 C语言及程序设计提高例程-31 编制自己的字符串函数
- C语言及程序设计提高例程-5 函数的参数
- C语言及程序设计提高例程-10 调试技术:进入函数内部去
- C语言及程序设计提高例程-25 指针作函数参数
- C语言及程序设计提高例程-36 多维数组作函数参数
- C语言及程序设计提高例程-29 实战字符串处理四例
- C语言及程序设计提高例程-6 参数传递方式:传值与传地址
- C语言及程序设计提高例程-20 经典:查找的艺术
- C语言及程序设计提高例程-26 实现线性表基本操作的函数
- C语言及程序设计提高例程-22 用指针法访问数组元素
- C语言及程序设计提高例程-33 二维数组元素的引用
- C语言及程序设计提高例程-8 函数的声明、定义和调用
- C语言及程序设计提高例程-12 变量的存储类别
- C语言及程序设计提高例程-27 编写查找和排序函数
- C语言及程序设计提高例程-3 体验自定义函数
- C语言及程序设计提高例程-9 函数的嵌套调用
- C语言及程序设计提高例程-16 数组的引入
- C语言及程序设计提高例程-17 一维数组的定义和引用
- C语言及程序设计提高例程-30 字符和字符串处理函数
- C语言及程序设计提高例程-28 字符串、字符数组、字符指针