【C语言】常用字符串函数大全(超详笔记收藏必备)(上)

简介: 【C语言】常用字符串函数大全(超详笔记收藏必备)(上)

这个章节,我们探讨C语言常用字符串函数。

重点介绍处理字符和字符串的库函数的使用和注意事项

如有兴趣也可以看看 字符串函数如何模拟实现


字符串函数头文件 #include<string.h>


gets (fgets)字符串输入函数文件 #include<stdio.h>


strlen



该函数是求字符串长度的。

size_t strlen ( const char * str );


相信大多数人对该字符串函数比较熟悉了,那我们看看直接看看注意事项吧,第三点大家可能比较容易忽略!。


注意事项

  1. 字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符

个数(不包含 ‘\0’ )。

  1. 参数指向的字符串必须要以 ‘\0’ 结束。
  2. 注意函数的返回值为size_t,是无符号的( 易错 )


下面输出的结果什么??


#include<string.h>
int main()
{
  if (strlen("abc") - strlen("abcdef") > 0)
  {
    printf(">");
  }
  else
  {
    printf("<");
  }
  return 0;
}


解析:


答案是:>

因为 函数的返回值为size_t,是个无符号整型、 两个无符号的数相减在内存补码存储的还是正数,所以打印了>


strcpy



字符串复制(拷贝)函数


char* strcpy(char * destination, const char * source );

参数说明:

destination:表示复制的目标字符数组;

source:表示复制的源字符数组


注意事项

  1. 将源指向的 C 字符串复制到目标指向的数组中,包括终止的 null 字符(并在该点停

止)。

  1. 源字符串必须以 ‘\0’ 结束。
  2. 会将源字符串中的 ‘\0’ 拷贝到目标空间
  3. 目标空间必须足够大,以确保能存放源字符串。
  4. 目标空间必须可变。


函数使用方法:


#include<string.h>
int main()
{
  char arr1[20] = "abc";
  char arr2[] = "abcdef";
  strcpy(arr1, arr2);
  printf("%s\n", arr1);
  return 0;
  }


最终输出结果:

abcdef


strcat



将两个字符串连接(拼接)起来。


char * strcat ( char * destination, const char * source );

参数说明

Destination:目的字符串;

Source:源字符串。


返回值:

该函数返回一个指向最终的目标字符串 Destination 的指针。


注意事项:

  1. 将源字符串的副本追加到目的字符串后面。目的中的最后一个 ‘\0’ 字符,被源的第一

个字符覆盖,并且在目的中由两者串联形成的新字符串的末尾包含一个’ \0’。

  1. 源字符串必须以 ‘\0’ 结束。
  2. 目标空间必须有足够的大,能容纳下源字符串的内容。
  3. 目标空间必须可修改
  4. 字符串不能自己给自己追加!。自己给自己追应用strncat库函数


函数使用方法:


#include<string.h>
int main()
{
  char arr1[20] = "abc";
  char arr2[] = "def";
  strcat(arr1, arr2);
  printf("%s\n", arr1);
  return 0;
}


最终输出结果:abcdef


strcmp



字符串比较,把 str1 所指向的字符串和 str2 所指向的字符串进行比较。


int strncmp ( const char * str1, const char * str2, size_t num );

参数说明:

str1 – 要进行比较的第一个字符串。

str2 – 要进行比较的第二个字符串。


标准规定:返回值

  • 第一个字符串大于第二个字符串,则返回大于0的数字
  • 第一个字符串等于第二个字符串,则返回0
  • 第一个字符串小于第二个字符串,则返回小于0的数字


函数使用方法:


#include <stdio.h>
#include <string.h>
int main ()
{
   char str1[] = "abcdef";
   char str2[] = "ABCDEF";
   int ret = 0;
   ret = strcmp(str1, str2);
   if(ret < 0)
   {
      printf("str1 小于 str2");
   }
   else if(ret > 0) 
   {
      printf("str1 大于 str2");
   }
   else 
   {
      printf("str1 等于 str2");
   }
   return 0 ;
}


最终输出结果:

str1 大于 str2


strncpy



复制字符串source中的内容—到字符串destination中,复制多少由num的值决定。


char * strncpy ( char * destination, const char * source, size_t num );

参数说明:

destination:表示复制的目标字符数组;

source:表示复制的源字符数组;

num:表示复制的字符串长度。


返回值

该函数返回最终复制的字符串。


注意事项

  1. 将源的第一个字符数复制到目标字符。如果在复制 num 个字符之前找到源 C 字符串的

末尾(由空字符表示),则用零填充目标,直到总共写入 num 个字符为止。

  1. 拷贝num个字符从源字符串到目标空间。
  2. 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到

num个。

  1. strncpy 没有自动加上终止符的,需要手动加上不然会出问题的。


函数使用方法:


#include <stdio.h>
#include <string.h>
int main()
{
  char destination[40] = "This is destination";
  char source[] = "This is source";
  strncpy(destination, source, 10);
   //strncpy 没有自动加上终止符的,需要手动加上不然会出问题的。
  destination[10] = '\0';
  printf("最终的目标字符串: %s\n", destination);
  return 0;
}


最终输出结果:

最终的目标字符串: This is sostination


strncat



追加子符串str2 中的内容—到字符串 str1 的结尾,增加多少由num的值决定。


int strncmp ( const char * str1, const char * str2, size_t num );

参数说明:

str1 – 指向目标数组

str2 – 要追加的字符串

num --要追加的最大字符数


返回值:

该函数返回一个指向最终的目标字符串 str1 的指针。


注意事项

  1. 将str2的第一个字符开始追加到目标,外加一个终止 ‘\0’ 字符。
  2. 如果str2 中 C 字符串的长度小于 num,则仅复制终止字符之前的内容。
  3. str1 空间要足够大 不然会越界访问


函数使用方法:

#include <stdio.h>
#include <string.h>
int main()
{
  char str1[50] = "This is str1";
  char str2[50] = "This is str2";
  strncat(str1, str2, 15);
  printf("最终的目标字符串:%s", str1);
  return 0 ;
}


最终输出结果:

最终的目标字符串:This is str1This is str2

目录
相关文章
|
28天前
|
C语言 C++
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
|
6天前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
9 0
|
19天前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
26天前
|
C语言
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
28天前
|
C语言
【C语言】模拟实现深入了解:字符串函数
【C语言】模拟实现深入了解:字符串函数
|
3月前
|
安全 程序员 C语言
【C语言】字符串函数及其模拟实现
【C语言】字符串函数及其模拟实现
|
3月前
|
C语言
【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)
perror函数打印完参数部分的字符串后,再打印⼀个冒号和⼀个空格,再打印错误信息。
58 0
|
3月前
|
存储 安全 编译器
【C语言篇】字符和字符串以及内存函数的详细介绍与模拟实现(上篇)
当然可以用scanf和printf输入输出,这里在之前【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)已经讲过了,这里就不再赘述,主要介绍只针对字符的函数.
50 0
|
3月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
3月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)