分享

我的C/C 之路

 londonKu 2012-05-06

花了一个多小时,终于把这些写完了,贴贴出来和大家分享下,都是关于字符串操作的,不懂请留言,注释都很清楚的

 

  1. #include<stdio.h>  
  2. /** 
  3. 字符串操作&重写C系统一些字符串操作函数 
  4. strcpy  strcmp  strcat 
  5. */  
  6. void strReplace(char *,char *,int );    //替换  
  7. char *strCopy(char *,const char *);     //拷贝  
  8. int strCompare(char *,char *);          //比较  
  9. char *strConcat(char *,char *);         //拼接  
  10. void strConvert(char *);                //倒置  
  11. int strLength(char *);                  //获取长度  
  12.   
  13. //调用函数  
  14. void strOperate()  
  15. {  
  16.     char source[]="China";  
  17.     char rep[]="ese";  
  18.     //替换  
  19.     puts("---------replace------------");  
  20.     strReplace(source,rep,4);  
  21.     puts(source);  
  22.     //拷贝  
  23.     puts("---------strcpy------------");  
  24.     char distStr[10];  
  25.     strCopy(distStr,"abcdefg");  
  26.     puts(distStr);  
  27.     //比较  
  28.     puts("---------strcmp------------");  
  29.     printf("%d\n",strCompare("ABCD","ABC"));  
  30.   
  31.     //获取长度  
  32.     puts("---------strlength------------");  
  33.     printf("%d\n",strLength("ABCDe"));  
  34.       
  35.     //拼接  
  36.     puts("---------strconcat------------");  
  37.     char sc[30] = "Chinese";  
  38.     strConcat(sc," FUCK Japanese");  
  39.     puts(sc);  
  40.   
  41.     //倒置  
  42.     puts("---------strconvert------------");  
  43.     char s[] = "I love my homeland";  
  44.     strConvert(s);  
  45.     puts(s);  
  46.       
  47. }  
  48. //替换  
  49. void strReplace(char *soucrStr,char *replaceStr,int pos)  
  50. {  
  51.     while(pos>0&&*soucrStr!='\0')//pos>1为了防止指针后移,以至于不准确  
  52.     {  
  53.         soucrStr++;//把指针移到指定位置  
  54.         pos--;  
  55.     }  
  56.     while(*soucrStr!='\0'&&*replaceStr!='\0')  
  57.     {  
  58.         *soucrStr = *replaceStr;//替换  
  59.         soucrStr++;  
  60.         replaceStr++;  
  61.     }  
  62. }  
  63. //拷贝(目标字符数组要比源数组大,不然会溢出,产生各种悲剧)  
  64. char *strCopy(char *distStr,const char *sourceStr)  
  65. {  
  66.     char *address = distStr;  
  67.     while((*distStr++=*sourceStr++)!='\0');//先赋值比较再自加  
  68.     //*distStr++是对指针++,再取值,至右向左,单独测试过了  
  69.     return address;  
  70. }  
  71. //比较  
  72. int strCompare(char *str1,char *str2)  
  73. {  
  74.     while(*str1&&*str2&&(*str1==*str2))  
  75.     {  
  76.         str1++;  
  77.         str2++;  
  78.     }  
  79.     return *str1-*str2;  
  80. }  
  81. //拼接  
  82. char *strConcat(char *distStr,char *sourceStr)  
  83. {  
  84.     char *address = distStr;  
  85.     while(*distStr)//移动到目标字符串尾部,若使用while(*distStr++),则会出错  
  86.     {  
  87.         distStr++;  
  88.     }  
  89.           
  90.     while((*distStr++=*sourceStr++)!='\0');  
  91.   
  92.     return address;  
  93. }  
  94. //倒置  
  95. void strConvert(char *str)  
  96. {  
  97.     int len = strLength(str);  
  98.     int mid = len/2;  
  99.     char tmp;  
  100.     for(int i=0;i<mid;i++)  
  101.     {  
  102.         tmp = str[i];  
  103.         str[i] = str[len-i-1];  
  104.         str[len-i-1] = tmp;  
  105.     }  
  106. }  
  107. //获取长度  
  108. int strLength(char *str)  
  109. {  
  110.     int len = 0;  
  111.     while(*str++)  
  112.         len++;  
  113.     return len;  
  114. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多