You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中输出包含指定字符的单词?

解决字符串中目标字符添加空格的问题

嘿,你已经迈出了关键的第一步——把字符串分割成单词啦!接下来只需要针对每个单词里的目标字符做处理,就能实现你想要的效果。我来帮你完善代码:

核心思路

遍历每个单词的每一个字符:

  • 如果当前字符是你要找的目标字符(比如示例里的'e'),就输出 空格+目标字符+空格
  • 如果不是目标字符,直接输出该字符即可
  • 每个单词处理完后,记得输出一个空格(最后一个单词的末尾空格不影响整体效果,为了实现简单就统一处理啦)

完善后的代码

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100];
    char newString[10][10]; // 存储分割后的单词
    int i, j, ctr;
    char target = 'e'; // 这里可以改成你要查找的任意字符

    printf("\n\n Split string by space into words and mark target char :\n");
    printf("-----------------------------------------------------------\n");
    printf(" Input a string : ");
    fgets(str1, sizeof str1, stdin);

    // 第一步:补全字符串分割逻辑,把原字符串按空格拆成单词
    j = 0;
    ctr = 0;
    for(i = 0; i < strlen(str1); i++) {
        // 遇到空格或换行符,代表当前单词结束
        if(str1[i] == ' ' || str1[i] == '\n') {
            newString[ctr][j] = '\0'; // 给单词添加字符串结束符
            ctr++; // 切换到下一个单词的存储位置
            j = 0; // 重置单词内的字符索引
        } else {
            newString[ctr][j] = str1[i];
            j++;
        }
    }

    // 第二步:遍历每个单词,处理目标字符并输出结果
    printf("\n处理后的结果:");
    for(i = 0; i < ctr; i++) { // 逐个遍历分割好的单词
        for(j = 0; j < strlen(newString[i]); j++) { // 遍历单词里的每个字符
            if(newString[i][j] == target) {
                // 遇到目标字符,前后加空格输出
                printf(" %c ", target);
            } else {
                // 非目标字符直接输出
                printf("%c", newString[i][j]);
            }
        }
        // 单词之间添加空格分隔
        printf(" ");
    }
    printf("\n");

    return 0;
}

测试效果

输入示例:Stack Overflow is Awesome
输出结果:Stack Ov e rflow is Aw e some

如果需要更换目标字符,只需要修改char target = 'e';这一行的字符就可以啦。

内容的提问来源于stack exchange,提问作者Arno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:06:29