如何在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
相关产品推荐
相关产品推荐

