《算法笔记》2.6小节——C/C++快速入门->函数 问题 B: 习题7-7 复制字符串中的元音字母

这篇博客介绍了如何使用C语言编写两个函数,分别通过直接打印和复制到新字符串的方式,提取输入字符串中的元音字母。提供的代码示例展示了如何检查字符串中的每个字符是否为元音,并按要求输出或复制这些元音。

问题 B: 习题7-7 复制字符串中的元音字母

题目描述

写一个函数,将一个字符串中的元音字母复制到另一个字符串中。在主函数中输入一个字符串,通过调用该函数,得到一个有该字符串中的元音字母组成的一个字符串,并输出。

输入

一个字符串(一行字符)。

输出

该字符串所有元音字母构成的字符串。行尾换行。

样例输入

CLanguage

样例输出

auae

提示

可以采用如下函数原型
void vowels(char s1[], char s2[]);
写了两种思路供读者参考

#include <stdio.h>
#include <string.h>
void vowels(char s1[])
{
    for(int i=0;i<strlen(s1);i++)
    {
        if(s1[i]=='a'||s1[i]=='e'||s1[i]=='i'||s1[i]=='o'||s1[i]=='u'||s1[i]=='A'||s1[i]=='E'||s1[i]=='I'||s1[i]=='O'||s1[i]=='U')
        {
            printf("%c",s1[i]);
        }
    }
}
int main()
{
    char s1[10];
    scanf("%s",s1);
    vowels(s1);
    return 0;
}
#include <stdio.h>
#include <string.h>

void vowels(char s1[], char s2[]) {
    int j = 0;
    for (int i = 0; i < strlen(s1); i++) {
        if (s1[i] == 'a' || s1[i] == 'e' || s1[i] == 'i' || s1[i] == 'o' || s1[i] == 'u' || s1[i] == 'A' ||
            s1[i] == 'E' || s1[i] == 'I' || s1[i] == 'O' || s1[i] == 'U') {
            s2[j++] = s1[i];
        }
    }
    s2[j] = '\0';
}

int main() {
    char s1[10];
    char s2[10];
    scanf("%s", s1);
    vowels(s1, s2);
    printf("%s", s2);
    return 0;
}
<think>我们正在讨论如何使用git命令克隆ESP-ADF仓库的特定分支(release/v2.6)。根据引用,用户可能遇到克隆问题,并提供了几种克隆方式。用户想知道在什么场景下使用特定的命令来克隆这个分支。 分析引用: 引用[1]:用户提到使用2.6版本的adf,为了减小体积,使用浅拷贝(--depth 1)并递归克隆(--recursive),同时指定了克隆的URL(国内镜像)和目录名(esp-adf-v2.6)。 引用[2]和[3]:提供了克隆命令,并指出国内使用gitee镜像,国外使用github。同时强调要使用递归克隆(--recursive)来获取子模块。 引用[4]:在Ubuntu环境下搭建环境,提到了更新子模块的脚本,这说明了子模块的重要性。 因此,克隆特定分支(release/v2.6)的场景和命令如下: 场景1:需要完整克隆整个仓库(包括所有历史记录)并切换到release/v2.6分支 命令:`git clone -b release/v2.6 --recursive https://gitee.com/EspressifSystems/esp-adf.git` 场景2:为了节省时间和磁盘空间,只克隆最近一次提交(浅克隆)的release/v2.6分支 命令:`git clone -b release/v2.6 --depth 1 --recursive https://gitee.com/EspressifSystems/esp-adf.git` 注意: 1. 使用`-b release/v2.6`来指定分支。 2. 使用`--recursive`或克隆后运行`git submodule update --init --recursive`来初始化并更新子模块(因为ESP-ADF依赖子模块)。 3. 国内用户使用gitee镜像(https://gitee.com/EspressifSystems/esp-adf.git)速度更快。 使用场景说明: - 浅克隆(--depth 1)适用于只需要该分支最新代码,不需要历史记录的情况,比如CI/CD环境或快速部署。 - 完整克隆(无--depth)适用于开发者需要查看历史提交记录、进行版本比较等场景。 另外,引用[4]提到在Ubuntu环境下使用脚本更新子模块,这提醒我们,如果克隆时没有使用`--recursive`,可以在克隆后手动更新子模块。 所以,针对用户的问题,克隆ESP-ADF的release/v2.6分支的具体场景包括: 1. 开发者需要基于ESP-ADF的2.6版本进行开发。 2. 需要快速获取2.6版本的代码(使用浅克隆)。 3. 在国内网络环境下,使用gitee镜像确保克隆成功。 示例命令: 完整克隆分支release/v2.6: ```bash git clone -b release/v2.6 --recursive https://gitee.com/EspressifSystems/esp-adf.git ``` 浅克隆分支release/v2.6: ```bash git clone -b release/v2.6 --depth 1 --recursive https://gitee.com/EspressifSystems/esp-adf.git ``` 如果克隆后子模块未初始化(比如忘记了`--recursive`),可以进入克隆的目录,运行: ```bash git submodule update --init --recursive ``` 注意:如果使用浅克隆,后续无法获取该分支的历史记录,也无法切换到其他分支(除非重新克隆)。因此,开发中如果需要切换分支,建议完整克隆。 总结:根据开发者的需求(是否需要历史记录、网络环境)选择合适的克隆方式,并始终注意递归克隆子模块以确保代码完整[^1][^3]。 §§相关问题§§ 1. 如何切换ESP-ADF到其他版本分支? 2. 克隆ESP-ADF仓库时遇到子模块更新失败如何解决? 3. 使用浅克隆后如何获取完整历史记录?</think>### ESP-ADF 特定分支克隆场景分析 使用 `git clone` 命令克隆 ESP-ADF 的 `release/v2.6` 分支适用于以下场景: --- #### **1. 特定版本开发需求** 当项目必须使用 **ESP-ADF v2.6** 的稳定版本时(例如: - 兼容旧硬件设备 - 依赖 v2.6 的特定音频编解码器或驱动 - 避免新版 API 变更导致的迁移成本 命令示例: ```bash git clone -b release/v2.6 --recursive https://gitee.com/EspressifSystems/esp-adf.git ``` --- #### **2. 网络受限环境** 通过 **国内镜像源** 加速克隆(适用于 GitHub 访问缓慢的场景[^3]): ```bash # 使用 Gitee 镜像(国内推荐) git clone -b release/v2.6 --recursive https://gitee.com/EspressifSystems/esp-adf.git ``` --- #### **3. 磁盘空间优化** 添加 `--depth 1` 参数进行浅克隆(仅下载最新提交,节省 50%+ 空间[^1]): ```bash git clone -b release/v2.6 --depth 1 --recursive https://gitee.com/EspressifSystems/esp-adf.git ``` --- #### **4. 子模块初始化** 使用 `--recursive` 确保子模块自动初始化(关键步骤!否则编译失败[^2][^4]): ```bash # 必须包含 --recursive git clone -b release/v2.6 --recursive ... ``` --- #### **5. 跨平台开发环境** - **Windows**:通过 Git Bash 执行命令[^2] - **Linux/macOS**:直接运行命令 - **后续步骤**:克隆后需运行子模块更新脚本(参考引用[4]) ```bash cd esp-adf ./submodule-update.sh # 初始化所有依赖 ``` --- ### 关键注意事项 1. **分支验证**:克隆后检查分支是否正确 ```bash git branch -a # 确认当前在 release/v2.6 ``` 2. **子模块完整性**:若克隆时遗漏 `--recursive`,需手动修复: ```bash git submodule update --init --recursive ``` 3. **版本隔离**:建议重命名目录避免冲突(如 `esp-adf-v2.6`[^1]) > 提示:若需升级到新版,直接克隆新分支(如 `release/v3.0`),**勿在 v2.6 分支执行 `git pull`**,可能导致代码冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XdpCs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值