鱼C论坛

 找回密码
 立即注册
查看: 1882|回复: 3

[已解决]如何在string中的特定character前后添加空格

[复制链接]
发表于 2023-9-26 21:39:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对于char* command = "cat<1.txt>2.txt",想要再"<"与">"前后添加空格使之成为"cat < 1.txt > 2.txt"
最佳答案
2023-9-26 22:11:15
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char command[1024]="cat<1.txt>2.txt>3.txt"                                 ;
  5.         int i , k , m                                                              ;
  6.         printf("%s\n" , command)                                                   ;
  7.         for(m = 0 ; command[m] ; m ++)                                             ;
  8.         for(k = 0 ; command[k] ;) {
  9.                 for(; command[k] && command[k] != '<' && command[k] != '>' ; k ++) ;
  10.                 if(command[k]) {
  11.                         for(i = m ; i > k ; i --) command[i + 2] = command[i]      ;
  12.                         command[k + 1] = command[k]                                ;
  13.                         command[k] = command[k + 2] = ' '                          ;
  14.                         k += 2                                                     ;
  15.                         m += 2                                                     ;
  16.                 }
  17.         }
  18.         printf("%s\n" , command)                                                   ;
  19. }
复制代码

        编译、运行实况:
  1. D:\[exercise]\C>g++ -o x2 x2.c

  2. D:\[exercise]\C>x2
  3. cat<1.txt>2.txt>3.txt
  4. cat < 1.txt > 2.txt > 3.txt

  5. D:\[exercise]\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-9-26 21:40:03 | 显示全部楼层
可以使用字符串操作函数和循环来实现。

以下是一个示例代码:

  1. #include <iostream>
  2. #include <cstring>

  3. int main() {
  4.     char* command = "cat<1.txt>2.txt";
  5.     char new_command[100] = ""; // 新字符串
  6.     int len = strlen(command);
  7.     for (int i = 0; i < len; i++) {
  8.         if (command[ i] == '<' || command[ i] == '>') {
  9.             strcat(new_command, " "); // 在特定字符前添加空格
  10.             strncat(new_command, &command[ i], 1); // 添加特定字符
  11.             strcat(new_command, " "); // 在特定字符后添加空格
  12.         } else {
  13.             strncat(new_command, &command[ i], 1); // 添加其他字符
  14.         }
  15.     }
  16.     std::cout << new_command << std::endl;
  17.     return 0;
  18. }
复制代码


解释:

1. 首先定义了原始字符串  command  和一个新字符串  new_command ,长度为 100。
2. 使用  strlen  函数获取原始字符串的长度。
3. 使用  for  循环遍历原始字符串中的每个字符。
4. 如果当前字符是  <  或  > ,则在新字符串中添加空格、特定字符和空格,以达到在特定字符前后添加空格的效果。
5. 如果当前字符不是  <  或  > ,则直接将其添加到新字符串中。
6. 最后,输出新字符串。

输出结果为: cat < 1.txt > 2.txt
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-26 21:40:25 | 显示全部楼层
问题分析:

对于给定的字符数组 char* command = "cat<1.txt>2.txt",我们需要在字符 <> 前后添加空格。

解决方案:

一种简单的方法是创建一个新的字符数组来存储结果,然后遍历原始字符串,并在满足条件的位置上插入空格。

下面是代码示例:
  1. ++
  2. #include <iostream>
  3. #include <cstring>
  4. int main() {
  5.     const char* command = "cat<1.txt>2.txt";
  6.     int len = strlen(command);
  7.     char newCommand[2 * len];  // 创建一个新的字符数组来存储结果
  8.     int j = 0;
  9.     for (int i = 0; i < len; i++) {
  10.         if (command[i] == '<' || command[i] == '>') {
  11.             newCommand[j++] = ' ';  // 在特定字符前添加空格
  12.             newCommand[j++] = command[i];  // 复制特定字符
  13.             newCommand[j++] = ' ';  // 在特定字符后添加空格
  14.         } else {
  15.             newCommand[j++] = command[i];  // 复制其他字符
  16.         }
  17.     }
  18.     newCommand[j] = '\0';  // 添加字符串结尾标志
  19.     std::cout << newCommand << std::endl;
  20.     return 0;
  21. }
复制代码

运行以上代码,将会输出结果:"cat < 1.txt > 2.txt"。

希望以上解答对你有帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-26 22:11:15 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char command[1024]="cat<1.txt>2.txt>3.txt"                                 ;
  5.         int i , k , m                                                              ;
  6.         printf("%s\n" , command)                                                   ;
  7.         for(m = 0 ; command[m] ; m ++)                                             ;
  8.         for(k = 0 ; command[k] ;) {
  9.                 for(; command[k] && command[k] != '<' && command[k] != '>' ; k ++) ;
  10.                 if(command[k]) {
  11.                         for(i = m ; i > k ; i --) command[i + 2] = command[i]      ;
  12.                         command[k + 1] = command[k]                                ;
  13.                         command[k] = command[k + 2] = ' '                          ;
  14.                         k += 2                                                     ;
  15.                         m += 2                                                     ;
  16.                 }
  17.         }
  18.         printf("%s\n" , command)                                                   ;
  19. }
复制代码

        编译、运行实况:
  1. D:\[exercise]\C>g++ -o x2 x2.c

  2. D:\[exercise]\C>x2
  3. cat<1.txt>2.txt>3.txt
  4. cat < 1.txt > 2.txt > 3.txt

  5. D:\[exercise]\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-11 20:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表