天天看點

C語言字元串操作常用庫函數

函數名: strrchr

功  能: 在串中查找指定字元的最後一個出現

用  法: char *strrchr(char *str, char c);

舉例: char fullname="./lib/lib1.so";

char *ptr;

ptr = strrchr(fullname,'/');

printf("filename is %s",++ptr);

//運作結果:filename is lib1.so

函數名: strchr

功  能: 在串中查找指定字元的第一個出現

用  法: char *strchr(char *str, char c);

舉例:char fullname="./lib/lib1.so";

char *ptr;

ptr = strrchr(fullname,'.');

printf("after strchr() is %s",++ptr);

//運作結果:after strchr() is /lib/lib1.so

函數名: strtok

功  能: 在串中查找指定字元的第一個出現

用  法: char *strtok(char *s, char *delim);

說明:

1.strtok函數的實質上的處理是,strtok在s中查找包含在delim中的字元并用NULL(’/0′)來替換,直到找遍整個字元串。這句話有兩層含義:(1)每次調用strtok函數隻能獲得一個分割機關。(2)要獲得所有的分割單元必須反複調用strtok函數。

2.strtok函數以後的調用時的需用NULL來替換s.

3.形參s(要分割的字元串)對應的變量應用char s[]=”….”形式,而不能用char *s=”….”形式。

舉例:void main()

{

char buf[]=”Golden Global View”;

char* token = strtok( buf, ” “);

while( token != NULL )

{

printf( ”%s “, token );

token = strtok( NULL, ” “);

}

return 0;

}

/*其結果為:

Golden

Global

View

*/

函數名:strncpy

功能:把src所指由NULL結束的字元串的前n個位元組複制到dest所指的數組中

用法:char *strncpy(char *dest, char *src, int n);

說明:    

        如果src的前n個位元組不含NULL字元,則結果不會以NULL字元結束。

        如果src的長度小于n個位元組,則以NULL填充dest直到複制完n個位元組。

        src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字元串。

        傳回指向dest的指針。

舉例: #include <syslib.h>

#include <string.h>

main()

{

char buf[4];

char *s="abcdefg";

strncpy(buf,s,4);

printf("%s/n",buf);

return 0;

}

/*運作結果:

abcd

*/

函數名: stpcpy

功  能: 拷貝一個字元串到另一個

用  法: char *stpcpy(char *destin, char *source);

舉例:#include <stdio.h>

#include <string.h>

int main(void)

{

char string[10];

char *str1 = "abcdefghi";

stpcpy(string, str1);

printf("%s/n", string);

return 0;

}

/*運作結果

abcdefghi

*/

函數名: strcat

功  能: 字元串拼接函數

用  法: char *strcat(char *destin, char *source);

舉例:#include <string.h>

#include <stdio.h>

int main(void)

{

char destination[25];

char *blank = " ", *c = "C++", *Borland = "Borland";

strcpy(destination, Borland);

strcat(destination, blank);

strcat(destination, c);

printf("%s/n", destination);

return 0;

}

/*運作結果:

Borland C++

*/

函數名: strcmp

功  能: 串比較

用  法: int strcmp(char *str1, char *str2);

看Asic碼,str1>str2,傳回值 > 0;兩串相等,傳回0

舉例:#include <string.h>

#include <stdio.h>

int main(void)

{

char *buf1 = "aaa", *buf2 = "bbb";

int ptr;

ptr = strcmp(buf2, buf1);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n");

else if(ptr < 0)

printf("buffer 2 is less than buffer 1/n");

else

printf("buffer 2 is equal with buffer 1/n");

return 0;

}

/*運作結果:

buffer 2 is greater than buffer 1

*/

函數名: strncmpi

功  能: 将一個串中的一部分與另一個串比較, 不管大小寫

用  法: int strncmpi(char *str1, char *str2, unsigned maxlen);

舉例:#include <string.h>

#include <stdio.h>

int main(void)

{

char *buf1 = "BBB", *buf2 = "bbb";

int ptr;

ptr = strcmpi(buf2, buf1);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n");

if (ptr < 0)

printf("buffer 2 is less than buffer 1/n");

if (ptr == 0)

printf("buffer 2 equals buffer 1/n");

return 0;

}

函數名: strcspn

功  能: 在串中查找第一個給定字元集内容的段

用  法: int strcspn(char *str1, char *str2);

舉例:#include <stdio.h>

#include <string.h>

#include <alloc.h>

int main(void)

{

char *string1 = "1234567890";

char *string2 = "747DC8";

int length;

length = strcspn(string1, string2);

printf("Character where strings intersect is at position %d/n", length);

return 0;

}

函數名: strdup

功  能: 将串拷貝到建立的位置處

用  法: char *strdup(char *str);

舉例:#include <stdio.h>

#include <string.h>

#include <alloc.h>

int main(void)

{

char *dup_str, *string = "abcde";

dup_str = strdup(string);

printf("%s/n", dup_str);

free(dup_str);

return 0;

}

函數名: stricmp

功  能: 以大小寫不敏感方式比較兩個串

用  法: int stricmp(char *str1, char *str2);

舉例:#include <string.h>

#include <stdio.h>

int main(void)

{

char *buf1 = "BBB", *buf2 = "bbb";

int ptr;

ptr = stricmp(buf2, buf1);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n");

if (ptr < 0)

printf("buffer 2 is less than buffer 1/n");

if (ptr == 0)

printf("buffer 2 equals buffer 1/n");

return 0;

}

函數名: strerror

功  能: 傳回指向錯誤資訊字元串的指針

用  法: char *strerror(int errnum);

舉例:#include <stdio.h>

#include <errno.h>

int main(void)

{

char *buffer;

buffer = strerror(errno);

printf("Error: %s/n", buffer);

return 0;

}

函數名: strncmp

功  能: 串比較

用  法: int strncmp(char *str1, char *str2, int maxlen);

舉例:#include <string.h>

#include <stdio.h>

int main(void)

{

char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";

int ptr;

ptr = strncmp(buf2,buf1,3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n");

else

printf("buffer 2 is less than buffer 1/n");

ptr = strncmp(buf2,buf3,3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 3/n");

else

printf("buffer 2 is less than buffer 3/n");

return(0);

}

函數名: strncmpi

功  能: 把串中的一部分與另一串中的一部分比較, 不管大小寫

用  法: int strncmpi(char *str1, char *str2, int len);

舉例:#include <string.h>

#include <stdio.h>

int main(void)

{

char *buf1 = "BBBccc", *buf2 = "bbbccc";

int ptr;

ptr = strncmpi(buf2,buf1,3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1/n");

if (ptr < 0)

printf("buffer 2 is less than buffer 1/n");

if (ptr == 0)

printf("buffer 2 equals buffer 1/n");

return 0;

}

函數名: strnset

功  能: 将一個串中的所有字元都設為指定字元

用  法: char *strnset(char *str, char ch, unsigned n);

舉例:#include <stdio.h>

#include <string.h>

int main(void)

{

char *string = "abcdefghijklmnopqrstuvwxyz";

char letter = 'x';

printf("string before strnset: %s/n", string);

strnset(string, letter, 13);

printf("string after strnset: %s/n", string);

return 0;

}

函數名: strpbrk

功  能: 在串中查找給定字元集中的字元

用  法: char *strpbrk(char *str1, char *str2);

舉例:#include <stdio.h>

#include <string.h>

int main(void)

{

char *string1 = "abcdefghijklmnopqrstuvwxyz";

char *string2 = "onm";

char *ptr;

ptr = strpbrk(string1, string2);

if (ptr)

printf("strpbrk found first character: %c/n", *ptr);

else

printf("strpbrk didn't find character in set/n");

return 0;

}

函數名: strrev

功  能: 串倒轉

用  法: char *strrev(char *str);

舉例:#include <string.h>

#include <stdio.h>

int main(void)

{

char *forward = "string";

printf("Before strrev(): %s/n", forward);

strrev(forward);

printf("After strrev(): %s/n", forward);

return 0;

}

/*運作結果:

Before strrev(): string

After strrev(): gnirts

*/

函數名: strstr

功  能: 在串中查找指定字元串的第一次出現

用  法: char *strstr(char *str1, char *str2);

舉例:#include <stdio.h>

#include <string.h>

int main(void)

{

char *str1 = "Borland International", *str2 = "nation", *ptr;

ptr = strstr(str1, str2);

printf("The substring is: %s/n", ptr);

return 0;

}

函數名: strtod

功  能: 将字元串轉換為double型值

用  法: double strtod(char *str, char **endptr);

舉例:#include <stdio.h>

#include <stdlib.h>

int main(void)

{

char input[80], *endptr;

double value;

printf("Enter a floating point number:");

gets(input);

value = strtod(input, &endptr);

printf("The string is %s the number is %lf/n", input, value);

return 0;

}

函數名: strtol

功  能: 将串轉換為長整數

用  法: long strtol(char *str, char **endptr, int base);

舉例:#include <stdlib.h>

#include <stdio.h>

int main(void)

{

char *string = "87654321", *endptr;

long lnumber;

/* strtol converts string to long integer */

lnumber = strtol(string, &endptr, 10);

printf("string = %s long = %ld/n", string, lnumber);

return 0;

}

函數名: strupr

功  能: 将串中的小寫字母轉換為大寫字母

用  法: char *strupr(char *str);

舉例:#include <stdio.h>

#include <string.h>

int main(void)

{

char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;

/* converts string to upper case characters */

ptr = strupr(string);

printf("%s/n", ptr);

return 0;

}

繼續閱讀