gpt4 book ai didi

c - 子串替换

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

我想实现一个c代码,使其仅替换完全匹配的内容,而不替换另一个字符串的一部分。查看我的代码。

#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="This is a simpled simple string";
char * pch;
char str1[]= "simple";
pch = strstr (str,str1);
strncpy (pch,"sample",6);
puts (str);
return 0;
}

上面的代码给出了输出:这是采样的简单字符串

我希望输出为:这是简单的示例字符串

请帮忙

谢谢。

最佳答案

处理此类问题的最佳方法是逐个单词一一考虑。然后检查给定字符串中是否存在模式(我们正在寻找的?),如果是,则将其替换为替换word.

下面是我的代码。 (我知道这可能看起来有点奇怪,但相信我,它适用于任何模式匹配和替换问题)。它将根据给定的模式单词及其相应的替换单词减少扩展最终输出。

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

int main() {
/* This program will replace the "demo" with "program" */
char input[] = " isdemo Hello this is demo. replace demo with demoes something else demo";
char pattern[] = "demo";
char replace[] = "program";
char output[105];
int index = 0;

/*Read the the input line word-by-word,
if the word == pattern[], then replace it else do nothing */
for(int i=0; i<strlen(input);) {
while(i<strlen(input) && !isalpha(input[i])) {
output[index++] = input[i++];
}

char temp[105]; int j = 0;
while(i<strlen(input) && isalpha(input[i])) {
temp[j++] = input[i++];
}
temp[j] = 0;

if(strcmp(temp, pattern) == 0) {
strncpy(output+index, replace, strlen(replace));
index += strlen(replace);
} else {
strncpy(output+index, temp, strlen(temp));
index += strlen(temp);
}
}

output[index] = 0;
puts(output);

return 0;
}

如果我仍然缺少任何测试用例。我会很高兴知道这一点。

关于c - 子串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661441/

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