当前位置:编程学习 > C/C++ >>

我的C/C++之路-009课(字符串操作&重写C系统一些字符串操作函数)

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

 

[cpp]
#include<stdio.h> 
/**
字符串操作&重写C系统一些字符串操作函数
strcpy  strcmp  strcat
*/ 
void strReplace(char *,char *,int );    //替换 
char *strCopy(char *,const char *);     //拷贝 
int strCompare(char *,char *);          //比较 
char *strConcat(char *,char *);         //拼接 
void strConvert(char *);                //倒置 
int strLength(char *);                  //获取长度 
 
//调用函数 
void strOperate() 

    char source[]="China"; 
    char rep[]="ese"; 
    //替换 
    puts("---------replace------------"); 
    strReplace(source,rep,4); 
    puts(source); 
    //拷贝 
    puts("---------strcpy------------"); 
    char distStr[10]; 
    strCopy(distStr,"abcdefg"); 
    puts(distStr); 
    //比较 
    puts("---------strcmp------------"); 
    printf("%d\n",strCompare("ABCD","ABC")); 
 
    //获取长度 
    puts("---------strlength------------"); 
    printf("%d\n",strLength("ABCDe")); 
     
    //拼接 
    puts("---------strconcat------------"); 
    char sc[30] = "Chinese"; 
    strConcat(sc," FUCK Japanese"); 
    puts(sc); 
 
    //倒置 
    puts("---------strconvert------------"); 
    char s[] = "I love my homeland"; 
    strConvert(s); 
    puts(s); 
     

//替换 www.zzzyk.com  
void strReplace(char *soucrStr,char *replaceStr,int pos) 

    while(pos>0&&*soucrStr!='\0')//pos>1为了防止指针后移,以至于不准确 
    { 
        soucrStr++;//把指针移到指定位置 
        pos--; 
    } 
    while(*soucrStr!='\0'&&*replaceStr!='\0') 
    { 
        *soucrStr = *replaceStr;//替换 
        soucrStr++; 
        replaceStr++; 
    } 

//拷贝(目标字符数组要比源数组大,不然会溢出,产生各种悲剧) 
char *strCopy(char *distStr,const char *sourceStr) 

    char *address = distStr; 
    while((*distStr++=*sourceStr++)!='\0');//先赋值比较再自加 
    //*distStr++是对指针++,再取值,至右向左,单独测试过了 
    return address; 

//比较 
int strCompare(char *str1,char *str2) 

    while(*str1&&*str2&&(*str1==*str2)) 
    { 
        str1++; 
        str2++; 
    } 
    return *str1-*str2; 

//拼接 
char *strConcat(char *distStr,char *sourceStr) 

    char *address = distStr; 
    while(*distStr)//移动到目标字符串尾部,若使用while(*distStr++),则会出错 
    { 
        distStr++; 
    } 
         
    while((*distStr++=*sourceStr++)!='\0'); 
 
    return address; 

//倒置 
void strConvert(char *str) 

    int len = strLength(str); 
    int mid = len/2; 
    char tmp; 
    for(int i=0;i<mid;i++) 
    { 
        tmp = str[i]; 
        str[i] = str[len-i-1]; 
        str[len-i-1] = tmp; 
    } 

//获取长度 
int strLength(char *str) 

    int len = 0; 
    while(*str++) 
        len++; 
    return len; 


摘自 mzlqh的专栏
补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,