gpt4 book ai didi

c - 从C中的字符串中删除字符

转载 作者:行者123 更新时间:2023-11-30 19:43:05 25 4
gpt4 key购买 nike

我在从字符串中删除字符时遇到问题。我已经能够识别要删除的字符并将它们存储为新字符串,但我想要一个代码,使我能够从原始字符串(我标记为 xxxxxxxx)中删除新字符串的字符。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char input[120], to_del[120], new_input[120];
int a,b;


void removeString();

int main(void)
{
printf("\nEnter your sentence: ");
gets(input);

printf("\nWhere to start: ");
scanf("%d",&a);
printf("\nHow many characters to delete: ");
scanf("%d",&b);

removeString();

printf("\nNew sentence: %s\n",new_input);

return ;
}

void removeString()
{
memcpy(to_del, &input[a-1], b);
new_input [strlen(input)-b] =xxxxxxxx;
return ;
}

最佳答案

编辑回应@SouravGhosh评论,关于重叠字符串。首先,我将字符串复制到 new_input,然后将右侧部分复制回 input 以覆盖必须删除的部分。

int len = strlen(input);
strcpy(new_input, input);
if (a < len && a+b <= len)
strcpy (input + a, new_input + a + b);

我注意到你的代码的其余部分没有检查任何事情是否正确发生,例如 scanf 的返回值,请注意 gets 是危险的:它是最好将 fgetsstdin 一起使用。

strcpy 指令将字符串的右侧部分复制到要删除的部分上。它通过使用指针算术来工作。将 a 添加到 input 与获取 input[a] 的地址相同,即您要开始删除的位置。类似地,new_input[a+b] 是您希望保留的右手部分的开始。

if 条件的要点是,如果 a 不在字符串内,或者如果要删除的部分超出了字符串的末尾,则它做不到。

关于c - 从C中的字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30098287/

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