本文主要是介绍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 编制自己的字符串函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!