当前位置:文档之家› c语言字符函数和字符串函数及应用

c语言字符函数和字符串函数及应用

ANSIC标准要求在使用字符串函数时要包含头文件”string.h”,在使用字符函数时要包含头文件”ctype.h”,有的C编译不遵循ANSI C标准的规定,而用其他的名称的头文件。

请使用时查有关手册。

C语言中的字符与字符串函数(string.h,ctype.h)函数名函数和形参类型功能返回值包含文件isalnum int isalnum(ch)int ch;检查ch是否是字母(alpha)或数字(numeric).是字母或数字返回1;否则返回0.ctype.hisalpha int isalpha(ch)int ch;检查ch是否是字母.是,返回1;否,返回0.ctype.hiscntrl int iscntrl(ch)int ch;检查ch是否控制字符(其ASCII码在0和0x1F之间).是,返回1;否,返回0.ctype.hisgraph int isgraph(ch)int ch;检查ch是否可打印字符(其ASCII码在ox21和ox7E之间),不包括空格.是,返回1;否,返回0.ctype.hislower int islower(ch)int ch;检查ch是否小写字母(a~z).是,返回1;否,返回0.ctype.hisprint int isprint(ch)int ch;检查ch是否可打印字符(包括空格),其ASCII码在ox20~ox7E之间.是,返回1;否,返回0.ctype.hispunct int ispunct(ch)int ch;检查ch是否标点字符(不包括空格),即除字母,数字和空格以是,返回1;否,返回0.ctype.h外的所有可打印字符.isspace int isspace(ch)int ch;检查ch是否空格,跳格符(制表符)或换行符.是,返回1;否,返回0.ctype.hisupper int isupper(ch)int ch;检查ch是否大写字母(A~Z)。

是,返回1;否,返回0.ctype.hisxdigit int isxdigit(ch)int ch;检查ch是否一个16进制数学字符(即0~9,或A~F,或a~f)。

是,返回1;否,返回0.ctype.hstrcat char*stract(str2,str2)char *str1,str2;把字符串str2接到str1后面,str1最后的’'被取消。

str1 string.hstrchr char*strchr(str,ch)char *str;int ch;找出str指向的字符串中第一次出现字符ch的位置。

返回指向该位置的指针,如找不到,则返回空指针。

string.hstrcpy char*strcpy(str1,str2)char *str1,*str2;把str2指向的字符串拷贝到str1中去。

返回str1。

string.hstrlen unsigned intstrlen(str)char *str;统计字符串str中字符的个数(不包括终止’'符)。

返回字符个数。

string.hstrstr char*strstr(str1,str2)char *str1,str2;找出str2字符串在字符串str1中第一次出现的位置(不包括的str2串结束符)。

返回该指针的位置。

如找不到,返回空指针。

string.htolower int tolower(ch)int ch;将ch字符转换成小写字母。

返回ch所代表的字符的小写字母。

ctype.htoupper int toupper(ch)int ch;将ch字符转换成大写字母。

返回ch所代表的字符的大写字母。

isdigit int isdigit(ch)int ch;检查ch是否数字(0~9)。

是,返回1;否,返回0.ctype.hstrcmp intstrcmp(str1,str2)char *str1,*str2;比较两个字符串str1,str2。

str1<str2,返回负数。

str1=str2,返回0。

str1>str2,返回正数。

string.hstpcpy原型:extern char *stpcpy(char *dest,char *src);用法:#include <string.h>功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest结尾处字符(NULL)的指针。

举例:// stpcpy.c#include <syslib.h>#include <string.h>main(){char *s=”Golden Global View”;char d[20];clrscr();stpcpy(d,s);printf(“%s”,d);getchar();return 0;}相关函数:strcpystrcat原型:extern char *strcat(char *dest,char *src);用法:#include <string.h>功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的’')并添加’'。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

举例:// strcat.c#include <syslib.h>#include <string.h>main(){char d[20]=”Golden Global”;char *s=” View”;clrscr();printf(“%s”,d);getchar();return 0;}相关函数:strncatstrcpy原型:extern char *strcpy(char *dest,char *src);用法:#include <string.h>功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

举例:// strcpy.c#include <syslib.h>#include <string.h>main(){char *s=”Golden Global View”;char d[20];clrscr();strcpy(d,s);printf(“%s”,d);return 0;}相关函数:memccpy,memcpy,stpcpy,strdup strlen原型:extern int strlen(char *s);用法:#include <string.h>功能:计算字符串s的长度说明:返回s的长度,不包括结束符NULL。

举例:// strlen.c#include <syslib.h>#include <string.h>main(){char *s=”Golden Global View”;clrscr();printf(“%s has %d chars”,s,strlen(s)); getchar();return 0;}相关函数:无strncat原型:extern char *strncat(char *dest,char *src,int n);用法:#include <string.h>功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的’')并添加’'。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

举例:// strncat.c#include <syslib.h>#include <string.h>main(){char d[20]=”Golden Global”;char *s=” View WinIDE Library”;clrscr();strncat(d,s,5);printf(“%s”,d);getchar();return 0;}相关函数:strcatstrncpy原型:extern char *strncpy(char *dest, char *src, int n);用法:#include <string.h>功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。

说明:如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。

如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src 的字符串。

返回指向dest的指针。

举例:// strncpy.c#include <syslib.h>#include <string.h>main(){char *s=”Golden Global View”;char *d=”Hello, GGV Programmers”;char *p=strdup(s);clrscr();textmode(0×00); // enable 6 lines modestrncpy(d,s,strlen(s));printf(“%sn”,d);strncpy(p,s,strlen(d));printf(“%s”,p);getchar();return 0;}相关函数:memccpy,memcpy,stpcpy,strcpy函数名: 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 %dn”, 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(“%sn”, 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 1n”); if (ptr < 0)printf(“buffer 2 is less than buffer 1n”);if (ptr == 0)printf(“buffer 2 equals buffer 1n”);return 0;}函数名: strerror功能: 返回指向错误信息字符串的指针用法: char *strerror(int errnum);程序例:#include <stdio.h>#include <errno.h>int main(void){char *buffer;buffer = strerror(errno);printf(“Error: %sn”, buffer);return 0;}函数名: 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 1n”);if (ptr < 0)printf(“buffer 2 is less than buffer 1n”);if (ptr == 0)printf(“buffer 2 equals buffer 1n”);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 1n”);elseprintf(“buffer 2 is less than buffer 1n”);ptr = strncmp(buf2,buf3,3);if (ptr > 0)printf(“buffer 2 is greater than buffer 3n”);elseprintf(“buffer 2 is less than buffer 3n”);return(0);}函数名: strncmpi功能: 把串中的一部分与另一串中的一部分比较, 不管大小写用法: int strncmpi(char *str1, char *str2,int maxlen);程序例:#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 1n”);if (ptr < 0)printf(“buffer 2 is less than buffer 1n”);if (ptr == 0)printf(“buffer 2 equals buffer 1n”);return 0;}函数名: strncpy功能: 串拷贝用法: char *strncpy(char *destin, char *source, int maxlen); 程序例:#include <stdio.h>#include <string.h>int main(void){char string[10];char *str1 = “abcdefghi”;strncpy(string, str1, 3);string[3] = ”;printf(“%sn”, string);return 0;}函数名: 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 1n”);if (ptr < 0)printf(“buffer 2 is less than buffer 1n”);if (ptr == 0)printf(“buffer 2 equals buffer 1n”);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: %sn”, string); strnset(string, letter, 13);printf(“string after strnset: %sn”, 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: %cn”, *ptr);else printf(“strpbrk didn’t find character in setn”); return 0;}函数名: 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: %dn”, c, ptr-string); elseprintf(“The character was not foundn”);return 0;}函数名: strrev功能: 串倒转用法: char *strrev(char *str);程序例:#include <string.h>#include <stdio.h>int main(void){char *forward = “string”;printf(“Before strrev(): %sn”, forward);strrev(forward);printf(“After strrev(): %sn”, forward);return 0;}函数名: 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(): %sn”, string); strset(string, symbol);printf(“After strset(): %sn”, string); return 0;}函数名: strspn功能: 在串中查找指定字符集的子集的第一次出现用法: int strspn(char *str1, char *str2); 程序例:#include <stdio.h>#include <string.h>#include <alloc.h>int main(void){char *string1 = “1234567890″;char *string2 = “123DC8″;int length;length = strspn(string1, string2);printf(“Character where strings differ is at position %dn”, length); return 0;}函数名: 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: %sn”, 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 %lfn”, input, value); return 0;}函数名: 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 terminatorin front of the token, if found */p = strtok(input, “,”);if (p) printf(“%sn”, p);/* A second call to strtok using a NULLas the first parameter returns a pointerto the character following the token */p = strtok(NULL, “,”);if (p) printf(“%sn”, p);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 = %ldn”, 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(“%sn”, ptr);return 0;}函数名: swab功能: 交换字节用法: void swab (char *from, char *to, int nbytes); 程序例:#include <stdlib.h>#include <stdio.h>#include <string.h>char source[15] = “rFna koBlrna d”;char target[15];int main(void){swab(source, target, strlen(source));printf(“This is target: %sn”, target);return 0;}PS:isalpha()是字符函数,不是字符串函数,isalpha原型:extern int isalpha(int c);用法:#include <ctype.h>功能:判断字符c是否为英文字母说明:当c为英文字母a-z或A-Z时,返回非零值,否则返回零。

相关主题