gpt4 book ai didi

c - 在 Unix 中删除 C 中的字符不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:34 25 4
gpt4 key购买 nike

我正在尝试从 unix 中的字符串中删除字符“a”这是我的代码

#include<stdio.h>
#include<string.h>
int main()
{
char str[]= "123abcabc123";
int i;
for(i=0; i < strlen(str); i++)
{
if(str[i]=='a')
str[i]='\b';
}
printf("str is %s\n",str);
return 0;
}

我得到的输出是 12bbc123 而不是 "123bcbc123"

最佳答案

您不能将退格字符 ('\b') 插入到字符串中并期望字符串收缩。

打印时它可能看起来更短,但在内存中它只是一个包含嵌入退格字符的字符串。

您需要将要删除的字符后的字符“向后”移动,即向较低的索引方向移动,以便用字符串中的后继字符覆盖要删除的字符,依此类推。您可以为此使用 memmove(),但要注意长度。我建议预先计算字符串长度。

关于c - 在 Unix 中删除 C 中的字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23271357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com