C語言字串操作函數實現

來源:互聯網
上載者:User

標籤:

1、字串反轉 – strRev

void strRev(char *str){    assert(NULL != str);
 
    int length=strlen(str);    char *end=str+length-1;    while(end > str)    {        *str=(*str)^(*end);        *end=(*str)^(*end);        *str=(*str)^(*end);        end--;        str++;    }}

 

2、字串複製 – strcpy

char *strcpy(char *strDest, const char *strStr){    assert((NULL != strDest) && (NULL != strStr));    char *Dest=strDest;    while((*Dest++)=(*strStr++))    {}    return strDest;}

 

3、字串拼接 –strcat

char *strcat(char *strDest, const char *strStr){    assert((NULL != strDest) && (NULL != strStr));    int length=strlen(strDest);    char *Dest=strDest+length;    while((*Dest++)=(*strStr++))    {}    return strDest;}

 

4、字串比較 –strcmp

int strcmp(const char *strDest, const char *strStr){    assert((NULL != strDest) && (NULL != strStr));    while(0==(*strDest - *strStr) && *strDest )    {        strDest++;        strStr++;    }    if(*strDest > *strStr)        return 1;    else if(*strDest < *strStr)        return -1;    else        return 0;}

 

5、字串長度 –strlen

int strlen(const char *strStr){    assert(NULL != strStr);    int length = 0;    while(‘\0‘ != *strStr)    {        length++;        strStr++;    }    return length;}

 

6、字串轉數字 –atoi

int atoi(const char *strStr){    assert(NULL != strStr);    int minus = 0;    int begin = 0;    int sum = 0;    while(‘\0‘ !=*strStr)    {        if(0==begin && (isdigit(*strStr) || ‘+‘==*strStr || ‘-‘==*strStr))        {            begin = 1;            if(‘-‘==*strStr)            {                minus = 1;                strStr++;                continue;            }        }        else if(!isdigit(*strStr))        {            printf("format is wrong !\n");            exit(1);        }        if(1==begin)        {            sum = sum*10 + (*strStr-‘0‘);        }        strStr++;    }    return minus ? (-sum):(sum);}

 

7、數字轉字串 –atoi

char *itoa(int num){    int temp,i,j;    char array[10];    static char strDest[10];    for(temp = num,i=0; i<10 && temp ;i++)    {        array[i]=temp%10+‘0‘;        temp/=10;    }    for(i=i-1,j=0 ; i>=0 && j<10; i--,j++)    {        strDest[j]=array[i];    }    strDest[j]=‘\0‘;    return strDest;}

 

8、計算字串中母音字元的個數

#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<ctype.h>int isVowel(char letter){    switch(toupper(letter))    {        case ‘A‘:        case ‘E‘:        case ‘I‘:        case ‘O‘:        case ‘U‘:            return 1;        default:            return 0;    }}int countVowel(const char * strStr){    assert(NULL != strStr);    int count=0;    while(‘\0‘ !=*strStr++)    {        if(isVowel(*strStr))            count++;    }    return count;}int main(){    char a[10]="hwlulr";    printf("%d\n",countVowel(a));    return 0;}

 

9、判斷一個字串是否是迴文

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>#include<ctype.h>int test(char a,char b){    if(a==b)        return 1;    return 0;}int isPalindrome(const char * strStr){    assert(NULL != strStr);    int length=strlen(strStr);    int i,j;    for(i=0,j=length-1; i<j ; i++,j--)    {        if(0==test(*(strStr+i),*(strStr+j)))            return 0;    }    return 1;}int main(){    char a[10]="heooeh";    printf("%s\n",isPalindrome(a)?"is Palindrome":"is not Palindrome");    return 0;}

C語言字串操作函數實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.