首页 > 解决方案 > 用多个字符替换一个字符

问题描述

我需要用(逗号和空格)替换" "(空格)。", "我有将字符串接收为 char* 的函数,并且在替换所有这些字符后会在屏幕上打印字符串。

char* PrintComma(char* Text) {
  for (int i = 0; i < strlen(Text); i++) {
    if (Text[i] == ' ') {
        Text[i] = ',';
    }
  }
  return Text;
}

这替换" "","但我需要", ". 我不允许使用第二个字符串或数组来保存临时数据。我只能使用这一个字符串。

例子:

Input => "Hello world my name is"
Output => "Hello, world, my, name, is"

标签: cstringcharc-strings

解决方案


这个问题似乎是 memmove() 的完美设置,memmove() 是一个在两个字符串之间复制字节但处理重叠内存块的库函数。

memmove(
    char_pointer + make_room_at + room_to_make,
    char_pointer + make_room_at,
    init_size - make_room_at + room_to_make
);

这是使用 memmove() 的应用程序。

char* PrintComma(char* Text) {
  for (int i = 0; i < strlen(Text); i++) {
    if (Text[i] == ' ') {
      memmove(
          Text + i + 1,
          Text + i,
          strlen(Text) - i + 1
      );
      Text[i++] = ',';
    }
  }
  return Text;
}

推荐阅读