Linux C 字符串函数 strlen()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy() 详解
strlen(返回字符串长度) | |
表头文件 |
#include <string.h> |
定义函数 |
size_t strlen(const char *s); |
函数说明 |
strlen()用来计算指定的字符串s的长度,不包括结束字符"\0"。 |
返回值 |
返回字符串s的字符数。 |
范例 |
#include <stdio.h> #include <string.h> int main(int argc, char **argv) { char *str = "12345678"; printf("str length = %d\n", strlen(str)); return 0; } |
执行 |
str length = 8 |
strcat(连接两字符串) | |
表头文件 |
#include <string.h> |
定义函数 |
char *strcat (char *dest,const char *src); |
返回值 |
返回参数dest的字符串起始地址 |
范例 |
#include <stdio.h> #include <string.h> int main(int argc, char **argv) { char a[30] = "string(1)"; char b[] = "string(2)"; printf("before strcat() : %s\n", a); printf("after strcat() : %s\n", strcat(a, b)); return 0; } |
执行 |
before strcat() : string(1) after strcat() : string(1)string(2) |
strncat(连接两字符串) | |
表头文件 |
#inclue <string.h> |
定义函数 |
char * strncat(char *dest, const char *src, size_t n); |
函数说明 |
strncat()会将参数src字符串拷贝n个字符到参数dest所指的字符串尾。第一个参数dest要有足够的空间来容纳要拷贝的字符串。 |
返回值 |
返回参数dest的字符串起始地址。 |
范例 |
#include <stdio.h> #include <string.h> int main(int argc, char **argv) { char a[30] = "string(1)"; char b[] = "string(2)"; printf("before strnact() :%s\n", a); printf("after strncat() :%s\n", strncat(a, b, 6)); return 0; } |
执行 |
before strnact() :string(1) after strncat() :string(1)string |
strcmp(比较字符串) | |
表头文件 |
#include <string.h> |
定义函数 |
int strcmp(const char *s1, const char *s2); |
函数说明 |
strcmp()用来比较参数s1和s2字符串。字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。 |
返回值 |
若参数s1和s2字符串相同则返回0。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。 |
范例 |
#include <stdio.h> #include <string.h> int main(int argc, char **argv) { char *a = "aBcDeF"; char *b = "AbCdEf"; char *c = "aacdef"; char *d = "aBcDeF"; printf("strcmp(a,b) : %d\n", strcmp(a, b)); printf("strcmp(a,c) : %d\n", strcmp(a, c)); printf("strcmp(a,d) : %d\n", strcmp(a, d)); return 0; } |
执行 |
strcmp(a,b) : 32 strcmp(a,c) : -31 strcmp(a,d) : 0 |
strcpy(拷贝字符串) | |
表头文件 |
#include <string.h> |
定义函数 |
char *strcpy(char *dest, const char *src); |
函数说明 |
strcpy()会将参数src字符串拷贝至参数dest所指的地址。 |
返回值 |
返回参数dest的字符串起始地址。 |
附加说明 |
如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用 strncpy() 来取代。 |
范例 |
#include <stdio.h> #include <string.h> int main(int argc, char **argv) { char a[30] = "string(1)"; char b[] = "string(2)"; printf("before strcpy() :%s\n", a); printf("after strcpy() :%s\n", strcpy(a, b)); return 0; } |
执行 |
before strcpy() :string(1) after strcpy() :string(2) |