【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现1

简介: 【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现

✒️ 前言

本小节我们将学习字符分类函数,字符串转换函数,使用库函数实现函数(tolower,toupper) 的大小写转换,当然还有字符串转换成整数(isdigit和atoi),使用(snprintf)将整数怎么转换回字符串。最后还有strlen函数的三种模拟实现。文章干货满满,让我们学习起来!

💯字符分类函数 image.png 这些函数的使⽤⽅法⾮常类似,如 islower:

int islower ( int c );

islower 是能够判断参数部分的 c 是否是⼩写字⺟的。

通过返回值来说明是否是⼩写字⺟,如果是⼩写字⺟就返回⾮0的整数,如果不是⼩写字⺟,则返回0。

#include <ctype.h>

int main()
{
  char arr[] = "A SeN yaO Zi XIn";
  int i = 0;
  while (arr[i])
  {
    if (islower(arr[i]))
    {
      arr[i] = arr[i] - 32;
    }
    putchar(arr[i]);
    i++;
  }
  return 0;
}

例如isalpha

#include <ctype.h>

int main() 
{
  char c = 'a';

  if (isalpha(c))//检查是否为==字母==字符( 'a '~'z' 或'A' ~ 'Z')
  {
    printf("%c is an alphabetic character.\n", c);
  }

  return 0;
}

💯 💯字符串转换函数

int tolower ( int c ); //将参数传进去的⼤写字⺟转⼩写 
int toupper ( int c ); //将参数传进去的⼩写字⺟转⼤写

这两个函数用于转换字母字符的大小写。

例如:

#include <ctype.h>
#include <stdio.h>
int main()
{
  char arr[] = "I Am A Student";
  int i = 0;
  while (arr[i])
  {
    if (isupper(arr[i]))
    {
      //arr[i] = arr[i] + 32;
      arr[i] = tolower(arr[i]);
    }
    putchar(arr[i]);
    i++;
  }
  return 0;
}

既然可以字符大小写换,那有没有字符串和数字转换的函数呢?答案是有的。

  • isdigit检查单个字符是否是数字
  • atoi将整个字符串转换为整数
  1. isdigit函数:
int isdigit(int c);

isdigit函数用于检查给定字符是否是一个ASCII数字字符。它返回一个非零值或0来指示字符是否是数字(在ctype.h头文件中)。

  1. atoi函数:
int atoi(const char *str);

atoi函数用于将字符串转换为相应的整数值。它会跳过字符串前面的空格,然后将字符串中连续的数字字符转换为整数返回。(使用atoi函数需要包含stdlib.h头文件)


它们都是标准C库中常用的字符串和数字转换函数。


isdigit:用于检查单个字符c是否是一个数字字符。如果是数字字符,它会返回c对应的ASCII数字值,否则返回0。

atoi(str):用于将字符串str转换为整数。它会跳过字符串前面的空白字符,然后将字符串中的数字字符转换为相应的整数值返回。

这两个函数经常一起使用,来实现字符串到整数的转换:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() 
{
  char str[] = "123";

  int i = 0;
  int sum = 0;
  for (i = 0; str[i] != '\0'; i++) 
  {
    if (isdigit(str[i])) //使用isdigit检查每个字符是否是数字
    {
      sum = sum * 10 + (str[i] - '0');
    }//如果是数字,则取它的ASCII值减去'0'得到实际值,累加计算字符串整数值
  }

  printf("isdigit 逐个转换: %d\n", sum);

  int num = atoi(str);//或者直接使用atoi直接转换整个字符串
  printf("atoi 直接转换: %d\n", num);

  return 0;
}

既然有实现字符串到整数的转换,那也可以将整数转换为字符串吧!没错!老铁,杠杠的!

snprintf函数可以将整数转换为字符串

snprintf函数原型:

int snprintf ( char * str, size_t n, const char * format, ... );
• 1

其中:

char *str 是目标字符串缓冲区指针

size_t size 是缓冲区大小缓冲区中要使用的最大字节数。生成的字符串的长度最多为 n-1,为额外的终止 null 字符留出空间。(size_t 是无符号整数类型。)

const char *format 是格式字符串

... 表示可变参数列表,根据格式字符串,该函数可能需要一系列附加参数,每个参数都包含一个值,用于替换格式字符串中的格式说明符(或指向存储位置的指针,对于 n)。这些参数的数量应至少与格式说明符中指定的值数一样多。该函数将忽略其他参数。

注意:snprintf函数的返回类型是一个int值,表示实际写入目标字符串(不包括终止null字符’\0’)的字符数。

如果返回值等于或大于指定的size,就表示格式化字符串写入目标缓冲区时会发生截断。

如果足够大,则将写入的字符数,不包括终止 null 字符。

如果发生编码错误,则返回负数。

请注意,只有当此返回值为非负且小于 时,字符串才被完全写入。


【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现2:https://developer.aliyun.com/article/1474748

相关文章
|
18天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
31 6
|
1天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
19 6
|
1月前
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
|
2月前
|
机器学习/深度学习 C语言
【c语言】一篇文章搞懂函数递归
本文详细介绍了函数递归的概念、思想及其限制条件,并通过求阶乘、打印整数每一位和求斐波那契数等实例,展示了递归的应用。递归的核心在于将大问题分解为小问题,但需注意递归可能导致效率低下和栈溢出的问题。文章最后总结了递归的优缺点,提醒读者在实际编程中合理使用递归。
63 7
|
2月前
|
存储 编译器 程序员
【c语言】函数
本文介绍了C语言中函数的基本概念,包括库函数和自定义函数的定义、使用及示例。库函数如`printf`和`scanf`,通过包含相应的头文件即可使用。自定义函数需指定返回类型、函数名、形式参数等。文中还探讨了函数的调用、形参与实参的区别、return语句的用法、函数嵌套调用、链式访问以及static关键字对变量和函数的影响,强调了static如何改变变量的生命周期和作用域,以及函数的可见性。
32 4
|
2月前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
27 0
|
2月前
|
C语言
【c语言】qsort函数及泛型冒泡排序的模拟实现
本文介绍了C语言中的`qsort`函数及其背后的回调函数概念。`qsort`函数用于对任意类型的数据进行排序,其核心在于通过函数指针调用用户自定义的比较函数。文章还详细讲解了如何实现一个泛型冒泡排序,包括比较函数、交换函数和排序函数的编写,并展示了完整的代码示例。最后,通过实际运行验证了排序的正确性,展示了泛型编程的优势。
23 0
|
2月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
36 3