【C语言】字符函数和字符串函数详解

简介: 【C语言】字符函数和字符串函数详解

1、strlen函数

函数原型    size_t strlen ( const char * str );

1、功能: 返回字符串str的长度

2、注意:

  1.字符串的结束标志是’\0’ ,参数指向的字符串必须要以’\0’ 结束。

  2.strlen函数返回的是在字符串中’\0’ 前面出现的字符个数(不包含’\0’ )。

  3.注意函数的返回值为size_t,是无符号的,即不会有负数!

3、演示代码:

#include<stdio.h>
#include<string.h>
int main()
{
  char *ch = "abcdef";
  //指针ch接收的是字符串的首地址,即'a'的地址
  int len=strlen(ch);
  printf("%d", len);
  //最后打印的结果是  6
  return 0;
}

2、strcpy函数

函数原型  char * strcpy ( char * destination, const char * source );

1、功能:将字符串 source 里面的内容拷贝到 destination 里

2、返回值:destination里面字符串的首字符地址

3、注意:

  1.目标参数destination的以前内容将被覆盖并丢失。

  2.源字符串必须以’\0’ 结束。会将源字符串中的’\0’ 拷贝到目标空间。

  3.目标空间必须足够大,以确保能存放源字符串。

4、演示代码

#include<stdio.h>
#include<string.h>
int main()
{
  char *ch = "abcdef";
  char str[20];
  strcpy(str, ch);
  //指针str接收的是字符串的首地址,即'a'的地址
  printf("%s", str);
  //打印的结果为  abcdef
  return 0;
}

3、strcat函数

函数原型  char * strcat ( char * destination, const char * source );

1、功能:将一个字符串 source 添加到另一个字符串 destination 的后面。

2、返回值:destination里面字符串的首字符地址

3、注意:

  1.源字符串必须以’\0’ 结束。目标空间必须有足够的大,能容纳下源字符串的内容。

  2.该函数不能自己给自己追加字符串,会造成死循环。

4、演示代码

#include<stdio.h>
#include<string.h>
int main()
{
  char str[20]="abcdef";
  char* ch = "ghijklmn";
  strcat(str, ch);
  //指针str接收的是字符串的首地址,即'a'的地址
  printf("%s", str);
  //打印结果是  abcdefghijklmn
  return 0;
}

4、strcmp函数

函数原型  int strcmp ( const char * str1, const char * str2 );

1、功能:比较两个字符串,按字符ASCII码值从第一个开始比较,如果str1小于str2,该函数返回一个小于零的值。如果str大于str2,函数返回一个大于零的值。如果两个字符串相等,函数就返回零。

2、返回值:整数

3、注意:字符串不能用等号来比较大小,只能用strcmp函数来比!

4、演示代码

#include<stdio.h>
#include<string.h>
int main()
{
  char *str="abcdef";
  char* ch = "abcdf";
  int ret =strcmp(str, ch);
  //'e'<'f'
  printf("%d", ret);
  //打印结果  -1
  return 0;
}

5、strncpy函数

函数原型   char * strncpy ( char * destination, const char * source, size_t num );

1、功能:将字符串 source 里面的前 num 个字符拷贝到 destination 里,这会造成 destination 前num个字符被覆盖

2、返回值:destination里面字符串的首字符地址

3、注意:

  1.该函数与 strcpy 极为相似,只是增加了拷贝的数量控制

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

4、代码演示

#include<stdio.h>
#include<string.h>
int main()
{
  char str[20] = "abcdef";
  char* ch = "klmn";
  strncpy(str, ch,3);
  printf("%s",str);
  //打印结果  klmdef
  return 0;
}

6、strncat函数

函数原型   char * strncat ( char * destination, const char * source, size_t num );

1、功能:将一个字符串 source 前 num 个字符添加到另一个字符串 destination 的后面。

2、返回值:destination里面字符串的首字符地址

3、注意:

  1.该函数与 strcat 极为相似,只是增加了追加的数量

  2.该函数在追加完字符后,会在结尾自动补上 ‘\0’ ,所以可以自己给自己追加字符串

4、演示代码

#include<stdio.h>
#include<string.h>
int main()
{
  char str[20] = "abcdef";
  strncat(str, str,6);
  printf("%s",str);
  //打印结果  abcdefabcdef
  return 0;
}

7、strncmp函数

函数原型   int strncmp ( const char * str1, const char * str2, size_t num );

1、功能:比较两个字符串前num个字符,按字符ASCII码值从第一个开始比较,如果str1小于str2,该函数返回一个小于零的值。如果str大于str2,函数返回一个大于零的值。如果两个字符串相等,函数就返回零。

2、返回值:整数

3、注意:该函数与 strcmp 极为相似,只是增加了追加的数量

4、演示代码

#include<stdio.h>
#include<string.h>
int main()
{
  char* str = "abcdef";
  char* ch = "abcdf";
  int ret = strncmp(str, ch,3);
  printf("%d", ret);
  //打印结果  0
  return 0;
}

8、strstr函数

函数原型  char * strstr (char * str1, const char * str2 );

1、功能:在 str1 中查找整个 str2 字符串第1次出现的起始位置,并返回一个指向该位置的指针。如果str2并没有完整地出现在str1字符串中,函数将返回一个NULL指针,如果第2个参数是一个空字符串,函数就返回str1。

2、返回值:char*的指针

3、演示代码

#include<stdio.h>
#include<string.h>
int main()
{
    char* p1 = "abcdef";
    char* p2 = "cde";
    printf("%s", strstr(p1, p2));
    //打印结果为   cdef
    return 0;
}

9、strtok函数

函数原型  char * strtok ( char * str, const char * delimiters );

1、功能:将字符串 str 分解为一组字符串,分隔符为delimiters。

2、返回值:char*的指针

3、注意:

  1. delimiters参数是个字符串,定义了用作分隔符的字符集合

  2. 第一个参数指定一个字符串,它包含了0个或者多个由 delimiters 字符串中一个或者多个分隔符分割的标记。

  3. strtok函数找到str中的一个标记,并将其用 ‘\0’ 结尾,返回一个指向这个标记的首元素指针。

  4. strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。

  5. strtok函数的第一个参数不为NULL ,函数将找到str中第一个标记,strtok函数将记录它在字符串中的位置

  6. strtok函数的第一个参数为NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。

  7.如果字符串中不存在更多的标记,则返回NULL 指针。

4、演示代码

  (此函数有些复杂,让我们先看结果再看代码,实际使用中不必记住上面的每一条注意,按下面代码的使用方式,使用此函数即可以,不必过于担心)

#include<stdio.h>
#include<string.h>
int main()
{
    //要切割的字符串
    char str[30] = "3107131629@qq.com";
    //切割符号    本例中是 @  与 .
    char* p2 = "@ .";
    printf("%s\n", strtok(str, p2));
    //注意第二次切割时,第一个参数(要切割的字符串)变为NULL
    //因为上面的 注意5. 注意6. 说明此函数有记忆效应!
    printf("%s\n", strtok(NULL, p2));
    //类似第二次,第一个参数变为NULL
    printf("%s\n", strtok(NULL, p2));
    return 0;
}

以后我们使用 strtok 函数可以类似上面的代码中对此函数的使用方式

10、strerror函数

  在介绍此函数之前先介绍一下 错误码,例如常见的 404错误 就是一个错误码,错误码记录了出现错误的原因。

  C语言中有一个隐藏的全局变量 errno,使用此全局变量必须先要引用头文件 ‘’#include <errno.h>‘’,该全局变量记录了程序使用中的出现错误的错误码,但是错误码我们看不懂,需要经过函数翻译才能看懂。

函数原型   char * strerror ( int errno );

1、功能:返回错误码,所对应的错误信息。

2、返回值:char*的指针,该指针指向了一句英文字符串,该英文就是错误原因

3、注意:要引用头文件 ‘’#include <errno.h>‘’

4、演示代码

  如果你为初学者看不懂此代码,那无所谓,体会此函数的作用即可

#include<stdio.h>
#include<string.h>
#include<errno.h>
int main()
{
    //读文件
    FILE* pf = fopen("test.txt", "r");
    //我当前目录没有 test.txt文件,故此代码错误,pf=NULL
    if (pf == NULL)
    {
        printf("%s\n", strerror(errno));
        return -1;
    }
    //关闭文件
    fclose(pf);
    pf = NULL;
    return 0;
}

此条英文就是错误原因


好了,关于字符函数和字符串函数的一些知识点就分享到这儿了,如果本篇文章有错误的地方或者不清楚的地方,可以在评论区随时留言或者私信给我哦!byebye

相关文章
|
25天前
|
存储 算法 C语言
【C语言】字符常量详解
字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。
113 11
|
25天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
51 10
|
25天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
43 9
|
25天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
34 8
|
25天前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
43 6
|
25天前
|
存储 C语言 开发者
【C语言】格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)
在C语言中,格式化输出通过 `printf` 函数等格式化输出函数来实现。格式说明符(占位符)定义了数据的输出方式,标准ISO/IEC 9899:2024(C23)对这些格式说明符进行了详细规定。本文将详细讲解格式说明符的组成部分,包括标志字符、宽度、精度、长度修饰符和类型字符,并适当增加表格说明。
41 6
|
25天前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
178 6
|
25天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
55 6
|
25天前
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
35 5
|
1月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
60 4