字符串函数

1.puts和gets

puts函数:将1个以’\0’结尾的字符串输出到屏幕上。接收参数为字符指针或者数组名

gets函数: 从终端输入1个字符串到字符数组中,返回字符数组的首地址。接收参数为数组名

2.strcpy和strncpy

必须引入string.h头文件

#include #include 
char *strcpy(char *dest,char *src);
char *strncpy(char *dest,char *src,int n);

​ strcpy:是string copy的缩写.返回值都是参数dest.

  • strcpy把src所指的以’\0’结尾的字符串复制到dest所指的数组中。

  • strncpy把src所指的以’\0’结尾的字符串的前n个字节复制到dest所指的数组中。

  • dest所指的数组必须足够大。复制时,连同字符串的’\0’一起被复制

  • 不能将1个字符串常量或字符数组直接赋给另一个字符数组。字符串的复制只能使用strcpy strncpy或者其他功能类似的函数

    下面是错误的
    char a[] = "Linux C Program",b[20];
    b = a;
  • strcpy存在安全漏洞,容易被黑客利用。一般应使用strncpy

    示例:
    char *s = "Hello world";
    char d1[20],d2[20];
    strcpy(d1,s);
    strncpy(d2,s,sizeof(s));//sizeof(s)返回12

3.strcat和strncat

#include #include 
char *strcat(char *dest,char *src);
char *strcat(char *dest,char *src,int n);
  • strcat是string catenate(字符串连接)的缩写。返回值都是参数dest.

  • strcat把src指向的字符串添加到dest结尾处覆盖dest结尾处的’\0’并添加’\0’

  • strcat也是有漏洞的,推荐使用strncat

    ​ 数组名也是指针

4.strcmp和strncmp

#include #include 
char *strcat(char *s1,char *s2);
char *strcat(char *s1,char *s2,int n);
  • strcmp是string compare的缩写

  • strncmp只对字符串的前n个字符进行比较,从左到右逐个字符进行比较,直到出现不同的字符或遇到’\0’;

    如果全部的字符相同且长度也一样,则返回0表示相等;

​ 如果出现不同的字符,不相同的字符相减,以多得的差作为返回值


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!