gpt4 book ai didi

c - 如何用 C 中的另一个字符串替换一段 const char*?

转载 作者:行者123 更新时间:2023-12-01 06:16:07 27 4
gpt4 key购买 nike

假设您有一个类似http://1.1.1.1/test.mpg 的链接。然后你想把它改成http://1.1.1.1/test.mkv。如何在 C 中以编程方式将“mpg”更改为“mkv”?我尝试使用 strtok 和 strcpy,但我不擅长 C,所以我做不到。

最佳答案

以下是解决方案,但还有一件事留给您进行试验!

在下面的代码中,malloc 的内存不是free 的。自己试试吧!

另一个缺点是,它只替换第一次出现的字符串。所以你可以改进这段代码来替换所有出现的字符串!

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

char * strrep(char *str, char *o_s, char *n_s)
{
char *newstr = NULL;
char *c = NULL;

/* no substring found */
if ((c = strstr(str, o_s)) == NULL) {
return str;
}

if ((newstr = (char *) malloc((int) sizeof(str) -
(int) sizeof(o_s) +
(int) sizeof(n_s) + 1)) == NULL) {
printf("ERROR: unable to allocate memory\n");
return NULL;
}

strncpy(newstr, str, c-str);
sprintf(newstr+(c-str), "%s%s", n_s, c+strlen(o_s));

return newstr;
}

int main(void)
{
char str[] = "http://1.1.1.1/test.mpg";
char old_s[] = "mpg";
char new_s[] = "mkv";
char *str_new = strrep(str, old_s, new_s);

if (str_new != NULL) {
printf("Original : %s\n", str);
printf("Replaced : %s\n", str_new);
}

return 0;
}

$ gcc strrep.c
$ ./a.out
Original : http://1.1.1.1/test.mpg
Replaced : http://1.1.1.1/test.mkv
$

关于c - 如何用 C 中的另一个字符串替换一段 const char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616105/

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