#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; }