字符串常见API
2019-04-07 本文已影响0人
simbanyan
字符串常见API
-
复制
char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n);
/* * 9.strcpytest.c */ 4 #include<stdio.h> 5 #include<string.h> 6 int main() { 7 char str1[]="1234567890"; 8 char c[20]; 9 char *p1=c; 10 char str2[30]="ABCDEFGKMKLOPKSZISFSFS"; 11 strcpy(p1,str1); 12 printf("p1:%s\n",p1); 13 strcpy(str2,str1); 14 printf("str2:%s\n",str2); 15 strncpy(str2,"abcdefg",3); 16 printf("str2:%s\n",str2); 17 strncpy(p1,"abcdefghijklmnopqrst",14); 18 printf("p:%s\n",p1); 19 }/* ~ out: p1:1234567890 str2:1234567890 // strcpy 在复制完成后会在末尾添加'\0',也可以说它复制了'\0' str2:abc4567890 // strncpy 复制完成不会在末尾添加'\0' p:abcdefghijklmnet�*/
总结: strcpy 会复制字符串后面的'\0',而strncpy 本身是部分截取,无法复制后面的'\0',也没有添加。
-
比较
-
int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, size_t n);
1 /* 2 * 9.strcmptest.c 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 int main() { 7 char str1[]="123abc"; 8 char str2[]="123456789"; 9 printf("strcmp : %d\n",strcmp(str1,str2)); 10 printf("strncmp : %d\n",strncmp(str1,str2,3)); 11 } /* out: strcmp : 45 strncmp : 0 str1-str2 返回相减的值 */
-
-
拼接
char *strcat(char *dest, const char *src); char *strncat(char *dest, const char *src, size_t n);
1 /* 2 * 9.strcattest.c 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 int main() { 7 char str1[50]="1234"; 8 char str2[]="abcdefg"; 9 strcat(str1,str2); 10 printf("str1:%s\n",str1); 11 str1[6]=0; 12 printf("str1:%s\n",str1); 13 strncat(str1,"ABCDFEG",3); 14 printf("str1:%s\n",str1); 15 } /*out: str1:1234abcdefg str1:1234ab str1:1234abABC //截取str2 放在str1后边,并且添加了'\0' */
-
查找
char *strchr(const char *s, int c); char *strrchr(const char *s, int c);
1 /* 2 * 9.strchrtest.c 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 int main() { 7 char str0[30]; 8 char str1[]="abcdefghijklmnopq"; 9 char *p; 10 p=strchr(str1,110); 11 printf("%s\n",p); 12 } // out : nopq
-
总结 :strchr 第二个参数是要传入一个字符的ASCii码,可以直接传入一个字符,返回该字符在第一个位置的地址。
-
内存复制
-
void *memcpy(void *dest, const void *src, size_t n);
1 /* 2 * 9.memcpytest.c 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 int main() { 7 char str1[]="1234567890"; 8 char str2[40]="aaaaaaaaaaaaaaaaa"; 9 memcpy(str2,str1,3); // str1 -> str2 复制3个字节 10 printf("str2:%s\n",str2); 11 } // out : str2:123aaaaaaaaaaaaaa
-