c - 用多个字符替换一个字符
问题描述
我需要用(逗号和空格)替换" "
(空格)。", "
我有将字符串接收为 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"
解决方案
这个问题似乎是 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;
}
推荐阅读
- bash - Kubernetes Helm bash 命令:bash: {"message":: command not found
- ruby-on-rails - 在 VS Code 中调试 Cucumber Ruby。错误:没有这样的文件或目录 - exec
- spring - 负载上基于 Spring Cloud Stream 内容的路由
- sql - 如何使用宏在 SAS 中获取当前月份名称和年份
- javascript - 递增/递减值函数 Localstorage
- node.js - Vue js 发布请求表单 | Vue.js 2
- javascript - JavaScript toISOString() 设置用户输入日期前一天的日期?
- arrays - 使用指针数学通过指针访问二维数组:需要数组类型 [Delphi]
- git - 如何从菜单中删除快捷方式?
- java - 使用流 api 将 HashMap 中的值收集到一个数组中