目录
- ▪ strcpy
- ▪ strcat
- ▪ strlen
- ▪ strncat
- ▪ strncpy
- ▪ strcspn
- ▪ strdup
- ▪ stricmp
- ▪ strerror
- ▪ strcmp
strcmp(ans1,ans2);//比较字典序 strncmp(ans1,ans2,n);//比较前n个字符字典序 strcpy(ans1,ans2);//把ans2复制给ans1 strncpy(ans1,ans2,n);//把ans2的前n位复制给ans1 strcat(ans1,ans2);//把ans2接到ans1后面,返回ans1 strncat(ans1,ans2,n);//把ans2的前n位接到ans1后面,返回ans1 strlwr(ans1);//把ans1中的大写字母变成小写 strupr(ans1);//把ans1中的小写字母变成大写 sprintf(s,"%d",x);//把整型x变成字符型s strlen(ans1);//求ans1的长度
getline(cin,s)
int main() { string line; cout << "Please input a line: " << endl; while (getline(cin, line,'#')) cout << line << endl; return 0; }
然后,那么当我们输入 "You are wonderful!#Mr. Ling" 时,但是,有效的输入是 "You are wonderful!",#后面的内容并没有存入。
strcpy
原型:extern char *strcpy(char *dest,char *src);
用法:#include
功能:把src所指由NUL结束的字符串复制到dest所指的 数组中。
返回指向dest结尾处字符(NUL)的 指针。
举例:
// strcpy.c #include#include <string.h> main() { char *s="Golden Global View"; char d[20]; clrscr(); strcpy(d,s); printf("%s",d); getchar(); return 0; }
strcat
原型:extern char *strcat(char *dest,char *src);
用法:#include
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
返回指向dest的 指针。
举例:
1 // strcat.c 2 #include3 #include <string.h> 4 main() 5 { 6 char d[20]="Golden Global"; 7 char *s=" View"; 8 clrscr(); 9 strcat(d,s); 10 printf("%s",d); 11 getchar(); 12 return 0; 13 }
strlen
原型:extern int strlen(char *s);
用法:#include
功能:计算字符串s的长度
说明:返回s的长度,不包括结束符NULL。
举例:
// strlen.c #include#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
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
返回指向dest的指针。
举例:
// strncat.c #include#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; }
strncpy
原型:extern char *strncpy(char *dest, char *src, int n);
用法:#include
功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
说明:
如果src的前n个 字节不含NULL字符,则结果不会以NULL字符结束。
如果src的长度小于n个 字节,则以NULL填充dest直到复制完n个字节。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
举例:
1 // strncpy.c 2 #include3 #include <string.h> 4 main() 5 { 6 char *s="Golden Global View"; 7 char *d="Hello, GGV Programmers"; 8 char *p=strdup(s); 9 clrscr(); 10 textmode(0x00); // enable 6 lines mode 11 strncpy(d,s,strlen(s)); 12 printf("%s\n",d); 13 strncpy(p,s,strlen(d)); 14 printf("%s",p); 15 free(p); 16 getchar(); 17 return 0; 18 }
strcspn
功 能: 在串中查找第一个给定 字符集内容的段
用 法: int strcspn(char *str1, char *str2);
程序例:
1 #include2 #include <string.h> 3 #include 4 int main(void) 5 { 6 char *string1 = "1234567890"; 7 char *string2 = "747DC8"; 8 int length; 9 length = strcspn(string1, string2); 10 printf("Character where strings intersect is at position %dn", length); 11 return 0; 12 }
strdup
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
程序例:
1 #include2 #include <string.h> 3 #include 4 int main(void) 5 { 6 char *dup_str, *string = "abcde"; 7 dup_str = strdup(string); 8 printf("%sn", dup_str); 9 free(dup_str); 10 return 0; 11 }
stricmp
功 能: 以大小写不敏感方式比较两个串
用 法: int stricmp(char *str1, char *str2);
程序例:
#include <string.h> #includeint 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; }
注意:此函数为Windows特有,在其他环境下可能会无法使用。
strerror
功 能: 返回指向错误信息字符串的指针
用 法: char *strerror(int errnum);
程序例:
1 #include2 #include 3 int main(void) 4 { 5 char *buffer; 6 buffer = strerror(errno); 7 printf("Error: %sn", buffer); 8 return 0; 9 }
strcmp
功 能: 将一个串与另一个比较
用 法: int strcmp(char *str1, char *str2);
程序例:
1 #include <string.h> 2 #include3 int main(void) 4 { 5 char *buf1 = "BBB", *buf2 = "bbb"; 6 int ptr; 7 ptr =strcmp(buf2, buf1); 8 if (ptr > 0) 9 printf("buffer 2 is greater than buffer 1n"); 10 if (ptr < 0) 11 printf("buffer 2 is less than buffer 1n"); 12 if (ptr == 0) 13 printf("buffer 2 equals buffer 1n"); 14 return 0; 15 }
strncmp
功 能: 把串中的一部分与另一串中的一部分比较 (前n个字符)
用 法: int strncmp(char *str1, char *str2,int maxlen);
程序例:
#include <string.h> #includeint main(void) { char *buf1 = "BBBccc", *buf2 = "bbbccc"; int ptr; ptr = strncmp(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; }
strnicmp
功 能: 不注重大小写地比较两个串的前n个字符
用 法: int strnicmp(char *str1, char *str2, unsigned maxlen);
程序例:
1 #include <string.h> 2 #include3 int main(void) 4 { 5 char *buf1 = "BBBccc", *buf2 = "bbbccc"; 6 int ptr; 7 ptr =strnicmp(buf2, buf1, 3); 8 if (ptr > 0) 9 printf("buffer 2 is greater than buffer 1n"); 10 if (ptr < 0) 11 printf("buffer 2 is less than buffer 1n"); 12 if (ptr == 0) 13 printf("buffer 2 equals buffer 1n"); 14 return 0; 15 }
strnset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char * strnset(char *str, char ch, unsigned n);
程序例:
#include#include <string.h> int main(void) { char letter = 'x'; printf("string beforestrnset: %sn", string); strnset(string, letter, 13); printf("string afterstrnset: %sn", string); return 0; }
strpbrk
功 能: 在串中查找给定 字符集中的字符
用 法: char *strpbrk(char *str1, char *str2);
程序例:
1 #include2 #include <string.h> 3 int main(void) 4 { 5 char *string1 = "abcdefghijklmnopqrstuvwxyz"; 6 char *string2 = "onm"; 7 char *ptr; 8 ptr = strpbrk(string1, string2); 9 if (ptr) 10 printf("strpbrk found first character: %c\n", *ptr); 11 else 12 printf("strpbrk didn't find character in setn"); 13 return 0; 14 }
strrchr
功 能: 在串中查找指定字符的最后一个出现
用 法: char *strrchr(char *str, char c);
程序例:
1 #include <string.h> 2 #include3 int main(void) 4 { 5 char string[15]; 6 char *ptr, c = 'r'; 7 strcpy(string, "This is a string"); 8 ptr = strrchr(string, c); 9 if (ptr) 10 printf("The character %c is at position: %dn", c, ptr-string); 11 else 12 printf("The character was not foundn"); 13 return 0; 14 }
strrev
功 能: 串倒转
用 法: char *strrev(char *str);
程序例:
1 #include <string.h> 2 #include3 int main(void) 4 { 5 char *forward = "string"; 6 printf("Before strrev(): %sn", forward); 7 strrev(forward); 8 printf("After strrev(): %sn", forward); 9 return 0; 10 }
strset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char * strset(char *str, char c);
程序例:
1 #include2 #include <string.h> 3 int main(void) 4 { 5 char string[10] = "123456789"; 6 char symbol = 'c'; 7 printf("Beforestrset(): %sn", string); 8 strset(string, symbol); 9 printf("Afterstrset(): %sn", string); 10 return 0; 11 }
strspn
功 能: 返回字符串中第一个不在指定字符串中出现的字符下标
用 法: int strspn(char *str1, char *str2);
程序例:
1 #include2 #include <string.h> 3 #include 4 int main(void) 5 { 6 char *string1 = "1234567890"; 7 char *string2 = "123DC8"; 8 int length; 9 length = strspn(string1, string2); 10 printf("Character where strings differ is at position %dn", length); 11 return 0; 12 }
strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2);
程序例:
1 #include2 #include <string.h> 3 int main(void) 4 { 5 char *str1 = "Borland International", *str2 = "nation", *ptr; 6 ptr = strstr(str1, str2); 7 printf("The substring is: %sn", ptr); 8 return 0; 9 }
strtod
功 能: 将字符串转换为double型值
用 法: double strtod(char *str, char **endptr);
程序例:
1 #include2 #include 3 int main(void) 4 { 5 char input[80], *endptr; 6 double value; 7 printf("Enter a floating point number:"); 8 gets(input); 9 value = strtod(input, &endptr); 10 printf("The string is %s the number is %lfn", input, value); 11 return 0; 12 }
strtok
功 能: 查找由在第二个串中指定的分界符分隔开的单词
用 法: char *strtok(char *str1, char *str2);
程序例:
#include <string.h> #includeint 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("%sn", 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("%sn", p); return 0; }
strtol
功 能: 将串转换为长整数
用 法: long strtol(char *str, char **endptr, int base);
程序例:
#include#include 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);
程序例:
1 #include2 #include <string.h> 3 int main(void) 4 { 5 char *string = "abcdefghijklmnopqrstuvwxyz", *ptr; 6 /* converts string to upper case characters */ 7 ptr =strupr(string); 8 printf("%sn", ptr); 9 return 0; 10 }
swab
功 能: 交换字节
用 法: void swab (char *from, char *to, int nbytes);
程序例:
#include#include #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
功能:判断字符c是否为英文字母
说明:当c为英文字母a-z或A-Z时,返回非零值,否则返回零。
举例:
1 // isalpha.c 2 #include3 #include 4 #include 5 int main() 6 { 7 int c; 8 clrscr(); // clear screen 9 printf("Press a key"); 10 for(;;) 11 { 12 c=getchar(); 13 clrscr(); 14 printf("%c: %s letter",c,isalpha(c)?"is":"not"); 15 } 16 return 0; // just to avoid warnings by compiler 17 }