C语言进阶⑬(字符串函数)+(指针编程题)strlen+strcpy+strcat+strstr+strtok+strerror(下)

简介: C语言进阶⑬(字符串函数)+(指针编程题)strlen+strcpy+strcat+strstr+strtok+strerror

C语言进阶⑬(字符串函数)+(指针编程题)strlen+strcpy+strcat+strstr+strtok+strerror(中):https://developer.aliyun.com/article/1513076


2.9 strtok

文档:char * strtok ( char * str, const char * sep );

注意事项:strtok 会破坏原字符串,分割后原字符串保留第一个分割符前的字符

分割邮箱使用演示:

 
#include<stdio.h>
#include<string.h>
int main()
{
    const char* sep = "/.";
    char email[] = "https://blog.csdn.net/GRrtx?type=blog";
    char cp[40] = { 0 };
    strcpy(cp, email);
    char* ret = strtok(cp, sep);
    if (ret != NULL)
        printf("%s\n", ret);
 
    ret = strtok(NULL, sep);
    if (ret != NULL)
        printf("%s\n", ret);
 
    ret = strtok(NULL, sep);
    if (ret != NULL)
        printf("%s\n", ret);
 
    ret = strtok(NULL, sep);
    if (ret != NULL)
        printf("%s\n", ret);
 
    ret = strtok(NULL, sep);
    if (ret != NULL)
        printf("%s\n", ret);
 
    return 0;
}

运行结果:

上面代码看书后用for优化后我的表情是这样的:

 
#include<stdio.h>
#include<string.h>
int main()
{
    const char* sep = "/.";
    char email[] = "https://blog.csdn.net/GRrtx?type=blog";
    char cp[40] = { 0 };
    strcpy(cp, email);
    for (char* ret = strtok(cp, sep); ret != NULL; ret = strtok(NULL, sep))
    {
        printf("%s\n", ret);
    }
 
    return 0;
}


2.10 strerror

文档:char * strerror ( int errnum );

返回错误码,所对应的错误信息。

C语言的库函数,在执行失败的时候,都会设置错误码,设置好的:

使用演示:

 
#include<stdio.h>
#include<string.h>
#include<errno.h>
int main()
{
    FILE* pf = fopen("test.txt", "r");//打开文件操作,后面会学
    if (pf == NULL)
    {
        printf("%s\n", strerror(errno));
        return 1;
    }
    fclose(pf);
    pf = NULL;
    return 0;
}


3 字符分类函数和字符转换函数

3.1字符分类函数

下面函数的头文件: #include <ctype.h> (这些函数不常用,刷题想不出来可以自己模拟实现)

代码演示:isupper

 
#include <stdio.h>
#include <ctype.h>
int main()
{
    char ch = 'R';
    if(isupper(ch))//是大写字母就返回非0  真
    {
        printf("是大写字母\n");
    }
    else
    {
        printf("不是大写字母\n");
    }
    return 0;
}


3.2字符转换函数

#include <ctype.h>

int tolower ( int c ); //大写转小写

int toupper ( int c ); //小写转大写

 
#include<stdio.h>
#include <ctype.h>
int main()
{
    int i = 0;
    char arr[] = "Test String.\n";
    while (arr[i] != '\0')
    {
        if (isupper(arr[i]))
        {
            arr[i] = tolower(arr[i]);
        }
        printf("%c", arr[i]);
        i++;
    }
    //运行结果:test string.
    return 0;
}


本篇完

练习就是自己模拟实现上面五种模拟实现的函数,其它的有时间就模拟下


目录
相关文章
|
9月前
|
C语言 C++
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
【C语言】解决不同场景字符串问题:巧妙运用字符串函数
|
9月前
|
存储 C语言
【c语言】字符串函数和内存函数
本文介绍了C语言中常用的字符串函数和内存函数,包括`strlen`、`strcpy`、`strcat`、`strcmp`、`strstr`、`strncpy`、`strncat`、`strncmp`、`strtok`、`memcpy`、`memmove`和`memset`等函数的使用方法及模拟实现。文章详细讲解了每个函数的功能、参数、返回值,并提供了具体的代码示例,帮助读者更好地理解和掌握这些函数的应用。
140 0
|
9月前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
9月前
|
C语言
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
9月前
|
C语言
【C语言】模拟实现深入了解:字符串函数
【C语言】模拟实现深入了解:字符串函数
|
6月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
305 23
|
5月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
97 1
一文彻底搞清楚C语言的函数
|
6月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
258 15
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
|
6月前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
119 24