天天看點

c語言字元串操作函數大全,C語言字元串操作函數整理

#include

#include

#include

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

//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);

//老師的文檔如上所述,但是自己測試幾次都沒有出錯,并且用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);

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);

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]="[email protected]@[email protected]";

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);

}

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;

}