c - 删除给定字符串中所有出现的单词的程序
问题描述
我已经编写了代码,但输出不正确:如果我输入How you doing
为原始字符串然后想要删除you
,输出应该是How doing
,但输出是How you doing
(与输入字符串相同)。
这是我的代码:
void removeWord(char *,char *);
int main() {
char str[100];
printf("Enter any string: ");
gets(str);
char re[20];
printf("\nEnter word to remove: ");
gets(re);
printf("\nString befor removing '%s' : \n%s", re, str);
removeWord(str, re);
printf("\nString after removing '%s' : \n%s", re, str);
return 0;
}
void removeWord(char *str, char *re) {
int slen, rlen, found, j;
slen = strlen(str);
rlen = strlen(re);
for (int i = 0; i <= slen - rlen; i++) {
found = 1;
for (j = 0; j < rlen; j++) {
if (str[i + j] != re[i + j]) {
found = 0;
break;
}
}
if (str[i + j] != ' ' && str[i + j] != '\t' && str[i + j] != '\n' && str[i + j] !='\0')
found = 0;
if (found == 1) {
for (int k = i; k <= slen - rlen; k++)
str[k] = str[k + rlen];
slen -= rlen;
i--;
}
}
}
解决方案
您可以使用预定义的函数来获取子字符串的第一个索引。在 C 中,我们有函数 'strstr()' 。如果字符串中存在子字符串,它将返回该子字符串的第一个索引,否则如果不存在,它将返回该数据数据类型中可能的最高值。
在 cpp 我们有 'size_t found = str.find(substr); ' 查看这篇关于C++ 中 GFG 字符串查找的文章
推荐阅读
- paypal - Magento 2.3.2 PayPal Payflow 付款失败
- r - 在 ggplot 图例项之间添加更多空间
- hazelcast - Hazelcast 缓存读取是否有可能阻止对同一缓存的写入
- android - 如何将多个字符串(项目)添加到单个 PopupMenu 列表
- c# - 用于 Linq 的 PredicateBuilder 的简单替代方法,用于使用 Func 而不是 Expression 的对象
- amazon-web-services - 用于 Lambda/Kinesis 事件源映射的 Cloudformation `StartingPositionTimestamp`
- css - Ionic 4 Slides(带 swiper 的离子幻灯片)居中但不是第一个和最后一个
- c# - 使用 ASP.Net C# 在数字签名 acrofield 中添加包含数字签名 PDF 的数据库中的图像
- python - GridSearchCV的改装和scorer组合不清楚
- python - 每次无需登录即可打开多个网络驱动程序