1. 程式人生 > >C語言string.h中常用字元函式介紹

C語言string.h中常用字元函式介紹

strcpy

函式名: strcpy 功 能: 拷貝一個字串到另一個 用 法: char *strcpy(char *destin, char *source); 程式例: #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1); printf("%s\n", string); return 0; }

strncpy

函式名:strncpy 原型:char
* strncpy(char *dest, char *src, size_t n);   功能:將字串src中最多n個字元複製到字元陣列dest中(它並不像strcpy一樣遇到NULL才停止複製,而是等湊夠n個字元才開始複製),返回指向dest的指標。 #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strncpy(string, str1,3); printf("%s\n", string); return
0; }

strcat

函式名: 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; }

strchr

函式名: strchr 功 能: 在一個串中查詢給定字元的第一個匹配之處\ 用 法: char *strchr(char *str, char c); 程式例: #include <string.h> #include <stdio.h> int main(void) { char string[15]; char *ptr, c = 'r'; strcpy(string, "This is a string"); ptr = strchr(string, c); if (ptr) printf("The character %c is at position: %d\n", c, ptr-string); else printf("The character was not found\n"); return 0; }

strcmp

函式名: 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", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater than buffer 1\n"); else printf("buffer 2 is less than buffer 1\n"); ptr = strcmp(buf2, buf3); if (ptr > 0) printf("buffer 2 is greater than buffer 3\n"); else printf("buffer 2 is less than buffer 3\n"); return 0; }

strnicmp

函式名: strnicmp 功 能: 將一個串中的一部分與另一個串比較, 不管大小寫 用 法: int strnicmp(char *str1, char *str2, unsigned maxlen); 程式例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "BBB", *buf2 = "bbb"; int ptr; ptr = strnicmp(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; }

strlen

函式名:strlen 功能: strlen函式求的是字串的長度,它求得方法是從字串的首地址開始到遇到第一個'\0'停止計數,如果你只定義沒有給它賦初值,這個結果是不定的,它會從字串首地址一直記下去,直到遇到'\0'才會停止。 原型: size_t strlen(const char *s); #include<stdio.h> #include <string.h> int main() { int i=0; char *he ="Hello,world"; i=strlen(he); printf("字串長度為%d\n",i); return 0; } // 執行結果: 字串長度為11

strcspn

函式名: 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

函式名: 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

函式名: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

函式名: 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; }

strcmpi

函式名: strcmpi 功 能: 將一個串與另一個比較, 不管大小寫 用 法: int strcmpi(char *str1, char *str2); 程式例: #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; }

strnicmp

函式名: strnicmp 功 能: 不注重大小寫地比較兩個串 用 法: int strnicmp(char *str1, char *str2, unsigned maxlen); 程式例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "BBBccc", *buf2 = "bbbccc"; int ptr; ptr = strnicmp(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

函式名: strnset 功 能: 將一個字串前n個字元都設為指定字元 用 法: 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

函式名: 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; }

strrchr

函式名: strrchr 功 能: 在串中查詢指定字元的最後一個出現 用 法: char *strrchr(char *str, char c); 程式例: #include <string.h> #include <stdio.h> int main(void) { char string[15]; char *ptr, c = 'r'; strcpy(string, "This is a string"); ptr = strrchr(string, c); if (ptr) printf("The character %c is at position: %d\n", c, ptr-string); else printf("The character was not found\n"); return 0; }

strrev

函式名: 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; }

strset

函式名: strset 功 能: 將一個串中的所有字元都設為指定字元 用 法: char *strset(char *str, char c); 程式例: #include <stdio.h> #include <string.h> int main(void) { char string[10] = "123456789"; char symbol = 'c'; printf("Before strset(): %s\n", string); strset(string, symbol); printf("After strset(): %s\n", string); return 0; }

strstr

函式名: 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

函式名: 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; }

strtok

函式名: strtok 功 能: 查詢由在第二個串中指定的分界符分隔開的單詞 用 法: char *strtok(char *str1, char *str2); 程式例: #include <string.h> #include <stdio.h> int main(void) { char input[16] = "abc,d"; char *p; /* strtok places a NULL terminator in front of the token, if found */ p = strtok(input, ","); if (p) printf("%s\n", p); /* A second call to strtok using a NULL as the first parameter returns a pointer to the character following the token */ p = strtok(NULL, ","); if (p) printf("%s\n", p); return 0; }

strtol

函式名: 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

函式名:strupr 功 能: 將串中的小寫字母轉換為大寫字母 用 法: char *strupr(char *str); 程式例: #include <stdio.h> #include <string.h> int main(void) { char string[ ] = "abcdefghijklmnopqrstuvwxyz", *ptr;//定義為陣列才能修改 /* converts string to upper case chara