C语言 字符函数和字符串函数(1)

目录

1.字符分类函数

2.字符转换函数

3.strlen的使用和模拟实现

4.strcpy的使用和模拟实现


在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语言标准库中提

供了一系列库函数,接下来我们就学习一下这些函数。

1.字符分类函数

C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。

这些函数的使用都需要包含一个头文件是 <ctype.h> 

这些函数的使用方法非常类似,我们就讲解一个函数的实例,其他的非常类似:

int islower ( int c );

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

通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返

回0。

练习:

 写一个代码,将字符串中的小写字母转大写,其他字符不变。

#include <stdio.h>
#include <ctype.h>
int main ()
{
    int i = 0;
    char str[] = "Test String.\n";
    char c;
    while (str[i])
    {
        c = str[i];
        if (islower(c))
            c -= 32;
        
        putchar(c);
        i++;
    }
    return 0;
}

代码解释:

1. 头文件
-  #include <stdio.h>  :要用  putchar  输出字符,得包含这个标准输入输出头文件。
-  #include <ctype.h>  : islower  函数能判断字符是不是小写字母,它在这个字符处理头文件里。
2.  main  函数
- 程序从这里开始。 int main  表示返回整数, return 0  说明程序正常结束。
3. 变量
-  int i = 0  :当索引,用来挨个访问字符串字符。
-  char str[] = "Test String.\n"  :存要处理的字符串。
-  char c  :临时存从字符串取出的字符。
4. 循环处理
-  while (str[i])  :只要字符不是结束符  '\0'  ,就循环。
-  c = str[i]  :拿出当前字符放  c  里。
-  if (islower(c))  :判断  c  是不是小写字母,是就执行下面。
-  c -= 32  :小写字母ASCII码减32 ,变成大写字母。
-  putchar(c)  :把处理后的字符打印出来。
-  i++  :准备处理下一个字符。

2.字符转换函数

C语言提供了2个字符转换函数:

int tolower ( int c ); //将参数传进去的大写字母转小写
int toupper ( int c ); //将参数传进去的小写字母转大写

上面的代码,我们将小写转大写,是-32完成的效果,有了转换函数,就可以直接使用 tolower  函

数。

#include <stdio.h>
#include <ctype.h>
int main ()
{
    int i = 0;
    char str[] = "Test String.\n";
    char c;
    while (str[i])
    {
        c = str[i];
        if (islower(c))
            c = toupper(c);
        putchar(c);
        i++;
    }
    return 0;
}

代码解释:

1. 功能:把字符串里的小写字母转成大写并输出。
2. 头文件:
-  stdio.h :用  putchar  打印字符。
-  ctype.h :用  islower  查小写字母, toupper  转大写。
3. 变量:
-  i :当“指针”,逐个访问字符串字符。
-  str :存要处理的字符串(比如  "Test String.\n" )。
-  c :临时存当前字符。
4. 过程:
- 逐个字符检查,是小写字母就转大写,然后打印。
- 直到遇到字符串结尾的  \0  才停止。

3.strlen的使用和模拟实现

size_t strlen ( const char * str );
  • - 字符串以  '\0'  作为结束标志, strlen 函数返回的是在字符串中  '\0'  前面出现的字符个数(不包含  '\0'  )。
  • - 参数指向的字符串必须要以  '\0'  结束。
  • - 注意函数的返回值为  size_t ,是无符号的(易错)。
  • -  strlen 的使用需要包含头文件。
  • - 学会 strlen 函数的模拟实现。
#include <stdio.h>
#include <string.h>
int main()
{
    const char* str1 = "abcdef";
    const char* str2 = "bbb";
    if(strlen(str2)-strlen(str1)>0)
    {
        printf("str2>str1\n");
    }
    else
    {
        printf("srt1>str2\n");
    }
    return 0;
}

代码解释:

1. 功能:比较两个字符串的长度并输出结果。
2. 头文件:
-  stdio.h :用于输入输出( printf )。
-  string.h :用于使用字符串长度函数  strlen 。
3. 变量:
-  str1  指向字符串  "abcdef" (长度6)。
-  str2  指向字符串  "bbb" (长度3)。
4. 逻辑:
- 计算  str2  长度减  str1  长度: 3-6 = -3 。
- 由于  -3  不大于0,输出  "srt1>str2" (注意代码中  srt1  是拼写错误,应为  str1 )。

strlen的模拟实现:
 
方式1:

//计数器方式
int my_strlen(const char * str)
{
    int count = 0;
    assert(str);
    while(*str)
    {
        count++;
        str++;
    }
    return count;
}

代码解释:

1. 函数功能:这个函数 my_strlen 用来计算传入字符串的长度,类似C语言标准库函数  strlen。
2. 参数 const char * str  表示传入一个指向字符常量的指针,即传入字符串的首地址, const  修饰意味着函数内不能通过这个指针修改字符串内容。
3. 变量 int count=0;定义一个整型变量 count 作为计数器,初始化为 0 ,用来统计字符串字符个数。
4. 断言 assert(str); 是一个断言宏,作用是在程序运行时检查 str 指针是否为空。如果 str 为空,程序会终止并报错,这能防止后续空指针解引用导致的程序崩溃。
5. 循环计数:
-  while(*str):只要当前指针指向的字符( *str )不是字符串结束符 '\0' ,就执行循环体。
-  count++;:每循环一次,计数器  count  加  1  ,统计字符数量。
-  str++;:将指针向后移动一位,指向下一个字符,以便继续检查后续字符。
6. 返回值:return count;当循环结束,说明已经遍历完字符串,此时返回计数器 count 的值,也就是字符串的长度(不包含结束符'\0')。

4.strcpy的模拟和使用

char* strcpy(char * destination, const char * source );
  • - 源字符串必须以  '\0'  结束。
  • - 会将源字符串中的  '\0'  拷贝到目标空间。
  • - 目标空间必须足够大,以确保能存放源字符串。
  • - 目标空间必须可修改。
  • - 学会模拟实现。
#include <stdio.h>
#include <string.h>

int main() {
    char source[] = "Hello, world!";  // 源字符串
    char destination[20];  // 目标字符串数组,空间要足够容纳源字符串

    // 使用strcpy函数将源字符串拷贝到目标字符串
    strcpy(destination, source); 

    printf("拷贝后的字符串: %s\n", destination);

    return 0;
}

代码解释:

1. 头文件引入
-  #include<stdio.h>:用于使用输入输出函数,如printf。
-  #include<string.h>: strcpy 函数的声明在这个头文件中,所以要引入。
2. 定义字符串
-  char source[] = "Hello, world!"; : 定义并初始化源字符串。
-  char destination[20];  :定义目标字符串数组,这里大小设为 20 ,确保能容纳源字符串(包括结束符'\0')。
3. 使用strcpy函数
 strcpy(destination, source); : 将源字符串source拷贝到目标字符串destination,包括字符串结束符'\0'。
4. 输出结果
 printf("拷贝后的字符串: %s\n", destination); : 使用printf函数输出拷贝后的目标字符串。

本篇内容先到这里,像这种函数还有多个,接下来再为大家一一显示,希望大家能深入理解,感谢

大家的观看!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值