C語言字符串操作函數總結
Part 1: Copying
1、 函數名: strcpy
用 法: char * strcpy ( char * destination, const char * source );
功 能: 串拷貝(Copies the C string pointed by source into the array pointed by destination, including the terminating null character. To avoid overflows, the size of the array pointed by destination shall be long enough to contain the same C string as source (including the terminating null character), and should not overlap in memory with 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;
}
2、函數名: strncpy
用 法: char * strncpy ( char * destination, const char * source, size_t num );
功 能: 指定長度的串拷(Copies the first num characters of source to destination. If the end of the source C string (which is signaled by a null-character) is found before num characters have been copied, destination is padded with zeros until a total of num characters have been written to it. No null-character is implicitly appended to the end of destination, so destination will only be null-terminated if the length of the C string in source is less than num.)
程序例:
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "To be or not to be";
char str2[6];
strncpy (str2,str1,5);
str2[5]='/0';//no '/0' will be appendeded to the end of destination automatically
puts (str2);//輸出To be
return 0;
}
另外參考:
void * memcpy ( void * destination, const void * source, size_t num );
void * memmove ( void * destination, const void * source, size_t num );
Part 2: Concatenation
3、函數名: 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;
}
另外參考:
char * strncat ( char * destination, char * source, size_t num );
Part 3: Comparison
4、函數名: strcmp
功 能: 串比較,大小寫敏感
用 法: int strcmp(char *str1, char *str2);
比較ASCII碼,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;
}
4.1、函數名: stricmp(還有一種寫法是strcmpi,VC 6.0都支持)
功 能: 以大小寫不敏感方式比較兩個串
用 法: 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;
}
5、函數名: strncmp
功 能: 將一個串中的一部分與另一個串比較, 大小寫敏感
用 法: int strncmp(char *str1, char *str2, size_t 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;
}
5.1、函數名: strncmpi(還有一種寫法是strnicmp,VC 6.0都支持)
功 能: 把串中的一部分與另一串中的一部分比較, 不管大小寫
用 法: int strncmpi(char *str1, char *str2);
程序例:
#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;
}
其它參考:
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
int strcoll ( const char * str1, const char * str2 );
size_t strxfrm ( char * destination, const char * source, size_t num );
Part 4: Searching
6、函數名: strchr
用 法: char *strchr(char *str, char c);
功 能: 在一個串中查找給定字符的第一個匹配之處(Locate first occurrence of character in string, Returns a pointer to the first occurrence of character in the C string str. The terminating null-character is considered part of the C string. Therefore, it can also be located to retrieve a pointer to the end of a string.)
程序例:
#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;
}
7、函數名: strcspn
用 法: int strcspn(char *str1, char *str2);
功 能: 在第一個串中查找包含任何第二個串給定字符集內容的位置(Get span until character in string, Scans str1 for the first occurrence of any of the characters that are part of str2, returning the number of characters of str1 read before this first occurrence. The search includes the terminating null-characters, so the function will return the length of str1 if none of the characters of str2 are found in str1.)
程序例:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
char *string1 = "1234567890";
char *string2 = "747D18";
int length;
length = strcspn(string1, string2); //length=0, match letter is 1
printf("Character where strings intersect is at position %d/n", length);
return 0;
}
8、函數名: strspn
用 法: int strspn(char *str1, char *str2);
功 能: 在串中查找指定字符集出現在串的子集的長度(Get span of character set in string, Returns the length of the initial portion of str1 which consists only of characters that are part of str2)
程序例:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
char *string1 = "1234567890";
char *string2 = "23DC81";
int length;
length = strspn(string1, string2); //length=3, the initial portion '123' cnsists of characters that are pare of string2
printf("Character where strings differ is at position %d/n", length);
return 0;
}
9、函數名: 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;
}
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-11/109332p2.htm
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm
將C語言梳理一下,分布在以下10個章節中: