zoukankan      html  css  js  c++  java
  • Linux C 字符串函数 strlen()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy() 详解

      strlen(返回字符串长度)

    表头文件

    #include <string.h>

    定义函数

    size_t strlen(const char *s);

    函数说明

    strlen()用来计算指定的字符串s的长度,不包括结束字符""。

    返回值

    返回字符串s的字符数。

    范例

    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char **argv)
    {
    	char *str = "12345678";
    	printf("str length = %d
    ", 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
    ", a);
    	printf("after strcat() : %s
    ", 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
    ", a);
    	printf("after strncat() :%s
    ", 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
    ", strcmp(a, b));
    	printf("strcmp(a,c) : %d
    ", strcmp(a, c));
    	printf("strcmp(a,d) : %d
    ", 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
    ", a);
    	printf("after strcpy() :%s
    ", strcpy(a, b));
    
    	return 0;
    }
    

    执行

    before strcpy() :string(1)
    after strcpy() :string(2)
  • 相关阅读:
    luogu P2827 蚯蚓
    CHOI1001/1002 火车进出栈问题
    hdoj4699 Editor
    反弹shell监控
    AppScan 9.0.3.6 crack
    Spectre & Meltdown Checker – CPU芯片漏洞检查脚本Linux版
    Microsoft IIS WebDav 'ScStoragePathFromUrl' Remote Buffer Overflow (CVE-2017-7269)
    Shodan新手使用指南
    The Art of Subdomain Enumeration (转)
    DDOS攻击方式总结 (转)
  • 原文地址:https://www.cnblogs.com/52php/p/5724382.html
Copyright © 2011-2022 走看看