字符串常见操作,你想要的这里都有
2019-03-07 16:03
399 查看
整理了一下近一年以来学习的有关字符串操作的函数,一方面是为了督促自己养成勤于整理碎片知识的习惯,一方面是通过再一次的敲击与思考加深自己对这些代码的思考。
[code]#include<stdio.h> #include<string.h> #define N 80 //求串长 int myStrLen(char *str) { int i;//既是扫描下标,又是计数器 for(i=0;*(str+i)!='\0';i++) ;//空操作 return i; } //串比较 int myStrCmp(char *s,char *t) { while(*s && *t && *s==*t) { s++; t++; } //跳出while条件有二:1.*s或*t至少有一为空【到达'\0'】、2.*s!=*t //通过第一个条件运算符判断条件1 //通过第2个条件运算符判断条件2 return (*s==*t)?0:(*s>*t?1:-1); } //串逆序输出 void myStrReverse() { char str ; int i; printf("input a string:\n"); gets(str); printf("after reverse:\n"); //下标i指向字符串末尾,从后往前打印 for(i=strlen(str)-1;i>=0;i--) printf("%c",str[i]); printf("\n"); } //删除串中指定字符 void myStrDel() { //申请一个临时字符数组strtemp,用于存储非指定字符 char str ,strtemp ; int i,j; printf("enter a string :"); gets(str); for(i=0,j=0;i<strlen(str);i++) if(str[i]!='c') strtemp[j++]=str[i]; strtemp[j]='\0';//由于是字符串,末尾记得补'\0' strcpy(str,strtemp); printf("after delete,str=%s",str); } //字符串复制 void myStrCopy() { char s1 ,s2 ="ascdefg\0hijk"; int i=0; while(1) { //先赋值,再判断是否为结束标志。 s1[i]=s2[i]; if(s2[i]=='\0') break; i++; } printf("after string copy :%s\n",s2); } //串连接 void myStrCat() { char dstStr[20]="12345",srcStr[20]="6789"; int i,j; printf("before strcat:\n"); printf("dststr=%s,srcstr=%s\n",dstStr,srcStr); printf("\n"); for(i=0;dstStr[i]!='\0';i++) ;//空操作,找到dstStr中'\0'的位置 //将srcStr的字符逐一置于dstStr后面 for(j=0;srcStr[j]!='\0';j++) dstStr[i+j]=srcStr[j]; dstStr[i+j]='\0';//新串末尾加'\0' printf("after strcat:\n"); printf("dstStr=%s\n",dstStr); } //串连接 void myStrCat1(char dstStr[],char srcStr[])//亦可将形参换为指针变量 { int i,j=0; while(dstStr[i]!='\0')//计算串长 i++; while(srcStr[j]!='\0') { dstStr[i]=srcStr[j]; i++; j++; } dstStr[i]='\0'; } //模式串匹配 【简单模式匹配】 int myStrLoc(char str1[],char str2[]) { unsigned int i,len1,len2; //分别计算主串和模式串的长度 len1=strlen(str1); len2=strlen(str2); //当主串的长度小于模式串时,铁定无法匹配成功 if(len1>len2) return -1; //循环判断语句:之所以要i<=strlen(str2)-strlen(str1) //是因为当i超出这个范围时,主串的剩余长度小于模式串,此时肯定不匹配 for(i=0;i<=strlen(str2)-strlen(str1);i++) if(strncmp(str1,str2+i,len1)==0) return i; return -1; } //截取子串 char *mySubStr(char *s,int start,int len) { static char sstr[20]; int i; if(start<0||start>=strlen(s)||len<0) return NULL; //注意:当从起始位置开始不足len个字符或中途遇到\0时的情况 for(i=0;i<len&&s[start]!='\0';i++) sstr[i]=s[start+i]; sstr[i]='\0'; return sstr; } //字符串循环左移n位【右移同理】 void myStrShiftL(char *s,int n) { int i,len; char ch; len=strlen(s); //左移几位就循环几次,一次移一位 for(i=0;i<n;i++) { ch=s[0]; strncpy(s,s+1,len-1); s[len-1]=ch; } }
相关文章推荐
- 字符串中常见操作
- Python字符串常见操作
- python 字符串常见的操作
- Python中字符串的常见操作技巧总结
- 字符串常见操作
- python中常见字符串的操作
- 常见字符串操作: C++ string 类 和Java String类 用法小结
- python的字符串(String)及其常见操作(方法、函数)
- MySQL中常见字符串操作函数
- javascript对字符串的常见操作trim,ltrim,rtrim,isEmpty,isFloat等
- JavaScript 字符串操作的几种常见方法
- Foundation框架(4)——NSString的常见操作:大小写转换、字符串比较、搜索、截取、构建路径、拓展名等用法
- 字符串常见操作
- web 前端 常见操作 将时间戳转成日期格式 字符串截取 使用mui制作选项卡
- js 常见数组和字符串的操作
- 黑马程序员,String类适用于描述字符串事物的。常见的操作有哪些?
- # Python常见字符串操作函数小结【split()、join()、strip()】
- 字符串常见操作
- shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
- VBS中常见字符串操作函数