C語言字符串操做函數整理

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char *str1="hello world!";
    char *str2="HELLO WORLD!";
    int len=strlen(str1);//求的字符串長度,不包括'\0'在內
    printf("len=%d\n",len);

    int cmp=strcmp(str1,str2);
    printf("cmp=%d\n",cmp);
    //str1>str2,返回大於零的值,str1<str2返回小於零的值,等於返回0。比較方式是逐個字符比較
    //int strcmp(char *str1,char * str2,int n),只是能夠控制個數,別的和strcmp()同樣

    char str3[100]="hello world!";
    char str4[100]="HELLO WORLD!";
    strcat(str3,str4);
    printf("str3=%s\n",str3);
    //函數將字符串str4 鏈接到str3的末端,即抹掉str3結尾的'\0',可是str4結尾的'\0'保留並返回指針str3。
    //str4應該爲const。str3的空間要足以容納str3和str4,否則會發生溢出錯誤,此函數不安全

    char str5[100]="hello world!";
    char str6[100]="HELLO WORLD!";
    strncat(str5,str6,5);
    printf("str3=%s\n",str5);
    //這個函數和strcat()同樣,只是相對更安全,能夠顯式的控制連接字符個數。
    //會抹掉str5的'\0',完了會自動添加'\0'

    char str7[100]="hello world!";
    char str8[100]="HELLO WORLD!";
    strcpy(str7,str8);
    printf("str7=%s\n",str7);
    //複製str8的內容到str7中,包括'\0',返回str7的指針,即所有抹掉str7的內容,換成str的
    //前提是str7的空間要足夠大能夠容納str8的內容以及'\0',因此此函數是相對不安全的

    char str9[100]="hello world!";
    char str10[100]="HELLO WORLDDDD!";
    strncpy(str9,str10,14);
    len=strlen(str9);
    printf("str9=%s\n",str9);
    printf("str9 len=%d\n",len);
    /*
        譯:拷貝 source 中的前 num 個字符到 destination 中去。若是在拷貝 num 個字符中遇
        到’\0’,則在其後而補’\0’; 若是 source 的長度大於 num,在拷貝完 num 個字符後,並不
        會在 destination 的後面追加’\0’。所在這種狀況下,destination 不以’\0’結尾,讀它可能
        會越界。
        一般做法是,依據 dest 的大小,設爲 N,而後去讀 N-1 個字符。而後將 dest[N-1]=
        ‘\0’;
    */
    //老師的文檔如上所述,可是本身測試幾回都沒有出錯,而且用strlen()統計也是正確的
    //使用此函數前提也是目標字符串的空間要足夠,也只是相對的安全

    int a=192,b=168,c=100,d=111;
    char str11[18];
    sprintf(str11,"%d.%d.%d.%d",a,b,c,d);
    len=strlen(str11);
    printf("str11=%s\n",str11);
    printf("str11 len=%d\n",len);
    //函數功能:把格式化的數據寫入某個字符串緩衝區。前提是緩衝區要存的下

    char str12[100]="   123abc";
    int data=atoi(str12);
    printf("str12 to data=%d\n",data);
    /*
     * 函數功能:將字符串轉換成整型數;atoi()會掃描參數 nptr 字符串,跳過前面的空格字
     * 符,直到趕上數字或正負號纔開始作轉換,而再遇到非數字或字符串時('\0')才結束
     * 轉化,並將結果返回(返回轉換後的整型數),如果首個就是字符,那就返回0
     * 在stdlib.h中
    */

    data=123;
    char str13[100];
    itoa(data,str13,10);
    printf("base=10,str13=%s\n",str13);
    itoa(data,str13,2);
    printf("base=2,str13=%s\n",str13);
    /*
     *根據指定的進制(base),將整型數據轉化爲以’\0’結尾的字符串,保存到 str 指向的字符數組中。
     * stdlib.h中
    */

    char str15[100]="hello world!";
    char *p=strchr(str15,'l');
    printf("l in str15 first=%s\n",p);
    //函數功能:返回字符串 str 中首次出現字符 c 的位置指針,返不到返回 NULL。

    char str16[100]="ll";
    p=strstr(str15,str16);
    printf("str16 in str15 first=%s\n",p);
    //函數功能:strstr() 函數搜索字符串 str2 在字符串 str1 中是否出現。找到所搜索的字符
    //串,則該函數返回第一次匹配的字符串的地址;若是未找到所搜索的字符串,則返回NULL

    char str17[100]="aaa@bbb@ccc@ddd";
    char *str18=strtok(str17,"@");
    printf("str18=%s\n",str18);
    int i=0;
    for(i=0;i<3;i++){
        str18=strtok(NULL,"@");
        printf("str18=%s\n",str18);
    }
    /*
     * 功能:分解字符串爲一組字符串。s 爲要分解的字符串,delim 爲分隔符字符串。
        說明:首次調用時,s 指向要分解的字符串,以後再次調用要把 s 設成 NULL。
        strtok 在 s 中查找包含在 delim 中的字符並用 NULL('\0')來替換, 直到找遍整個字符串。
        返回值:從 s 開頭開始的一個個被分割的串。當沒有被分割的串時則返回 NULL。
        全部 delim 中包含的字符都會被濾掉,並將被濾掉的地方設爲一處分割的節點。
    */

    char str19[20]={0};
    //memset(str19,'y',sizeof(str19));
    memset(str19,'y',5);
    printf("memset str19=%s\n",str19);
    //功能: 函數拷貝ch 到buffer 從頭開始的count 個字符裏, 並返回buffer指針。
    //memset() 能夠應用在將一段內存初始化爲某個值。
    //例如:memset( the_array, '\0', sizeof(the_array) );
    //這是將一個數組的因此份量設置成零的很便捷的方法。

    char str20[100]="hello world!";
    char str21[100]="HELLO WORLD!";
    memcpy(str20,str21,5);
    printf("memcpy str21 to str20=%s\n",str20);
    //定義:void *memcpy( void *to, const void *from, size_t count );
    //功能:函數從from中複製count 個字符到to中,並返回to指針。若是to 和 from 重疊,函數行爲不肯定。
    //應用於字符串做用相似於strncpy()

    char str22[100]="hello world!";
    char str23[100]="HELLO WORLD!";
    memmove(str22,str23,5);
    printf("memmove str23 to str22=%s\n",str22);
    //功能: 與mencpy相同,不一樣的是當to 和 from 重疊,函數正常仍能工做。

    return 0;
}
相關文章
相關標籤/搜索