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)
  • 相关阅读:
    博客中引用的概念
    重构博客写作
    做中学之教与学工具箱
    做中学之效率工具箱
    两个月选一本理想教材
    《敏捷革命》读书笔记
    《Java2 实用教程(第五版)》学习指导
    得到.每天听本书
    「2017年教育部-永信至诚产学合作协同育人网络空间安全专业课程教学研讨会」参会总结
    Ditto在教学上的应用
  • 原文地址:https://www.cnblogs.com/52php/p/5724382.html
Copyright © 2011-2022 走看看