寒假学习(7)(C语言7+模数电7)

cpp 复制代码
#include <stdio.h>
#include <string.h>
 
int main()
{
    //strspn函数怎么用
    //函数说明:
    //strspn函数返回字符串str1中第一个不在字符串str2中出现的字符下标。
    char *str = "123456789";
    char *str2 = "23";
    printf("%d\n", strspn(str, str2));
 
    return 0;
}
一键获取完整项目代码
cpp

#include <stdio.h>
#include <string.h>
 
int main()
 
{
    #if 0
    //strstr函数怎么用
 
    //函数说明:
 
    //strstr函数返回字符串str2在字符串str1中第一次出现的位置。
 
    char *str = "123456789";
 
    char *str2 = "23";
 
    printf("%s\n", strstr(str, str2));
    #endif
 
    //使用strstr函数统计字串的个数
    char *str = "123223323423";
    char *str2 = "23";
    int count = 0;
    char *p = str;
 
    while(p!=NULL)
    {
        p = strstr(p, str2);
        if(p!=NULL)
        {
            count++;
            p += strlen(str2);
        }
    }
 
    // while ((p = strstr(p, str2)) != NULL)
    // {
    //     count++;
    //     p += strlen(str2);
    // }
    printf("%d\n", count);
 
    return 0;
 
}
cpp 复制代码
#include <stdio.h>
#include <string.h>
 
int main()
{
    //strtok函数怎么用
    //函数说明:
    //strtok函数将字符串str1分割成由字符串str2分割的多个部分,并返回分割后的第一个部分。
    char str[] = "i am from china";  // 使用数组而非字符串字面量,允许修改
    char *delim = " ";  // 分隔符字符串
 
    char *result = strtok(str, delim);
 
    while (result != NULL)
    {  // 检查返回值
        printf("%s\n", result);
        result = strtok(NULL, delim);  // 继续分割
    }
    
 
    return 0;
}
cpp 复制代码
#include <stdio.h>
#include <string.h>
//实现strtok_r函数
char* strtok_r(char* str, const char* delim, char** saveptr)
{
 
    if (str == NULL)
    {
        str = *saveptr;
    }
    
    if (str == NULL)
    {
        return NULL;    
    }
 
    while(delim != NULL)
    {
        if (*delim == *str)
        {
            *str = '\0';
            *saveptr = str + 1;
            return str;
        }
        delim++;
    }
    
}
 
int main()
{
    char str[] = "i am from china";  // 使用数组而非字符串字面量,允许修改
    char *delim = " ";  // 分隔符字符串
 
    char *saveptr = NULL;
 
    char *result = strtok_r(str, delim, &saveptr);
 
    while (result != NULL)
    {  // 检查返回值
        printf("%s\n", result);
        result = strtok_r(NULL, delim ,&saveptr);  // 继续分割
    }
 
    return 0;
}
cpp 复制代码
#include  <stdio.h>
 
int add(int a, int b)
 
{
 
    return a + b;
 
}
 
int main()
{
    //函数指针的作用
    //函数指针是指向函数的指针,可以通过函数指针调用函数。
    int (*p)(int, int) = add;
    printf("%d\n", p(1, 2));
    //1.隐藏接口
    //2. 间接体现多态
 
    return 0;
}
cpp 复制代码
#include <stdio.h>
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a, int b)
{
    return a * b;
}
 
int main()
{
    //函数指针数组怎么用
    //函数指针数组是指一个数组,数组中的每个元素都是一个函数指针。
    int (*p[3])(int, int) = {add, sub, mul};
    printf("%d\n", p[0](1, 2));
    printf("%d\n", p[1](1, 2));
    printf("%d\n", p[2](1, 2));
 
    return 0;
 
}
cpp 复制代码
#include <stdio.h>
//什么是可变参数
 
/**
 * 实现原理
 * 变量压栈是连续的 
 * C语言提供了三个宏定义
 * va_start(ap, n) 初始化ap
 * va_arg(ap, type) 获取参数
 * va_end(ap) 结束
 */
#include <stdarg.h>
 
int add(int n, ...)
//以一个参数n表示可变参数的个数
 
{
    int sum = 0;
 
    va_list ap;
 
    va_start(ap, n);
 
    for (int i = 0; i < n; i++)
 
    {
 
        sum += va_arg(ap, int);
 
    }
 
    va_end(ap);
 
    return sum;
 
}
 
int main()
 
{
 
    //可变参数怎么用
 
    //可变参数是指一个函数可以接收任意个数的参数。
 
    printf("%d\n", add(3, 1, 2, 3));
 
    return 0;
}
相关推荐
晴天的雨.99243 分钟前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
M78佐菲6 小时前
ARM学习笔记(1)
linux·arm开发·笔记·嵌入式硬件·学习
aramae7 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
荆棘鸟智能8 小时前
城市感知设备怎么统一接入?从多协议网关到设备模型的中间件架构设计
人工智能·算法·边缘计算
无敌贵点大王8 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
Logic1019 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
是翎10 小时前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
Linux-lucky10 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
知识分享小能手11 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
INGNIGHT12 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法