gpt4 book ai didi

C编程: Replace an inner string using strcpy?

转载 作者:行者123 更新时间:2023-12-04 10:09:27 25 4
gpt4 key购买 nike

我使用以下代码将一个 HTML 文件复制到一个数组中:

fseek(board, 0, SEEK_END);
long int size = ftell(board);
rewind(board);
char *sourcecode = calloc(size+1, sizeof(char));
fread(sourcecode, 1, size, board);

现在我的目标是用已经定义的字符字符串“king”替换数组中的某个注释。例如。

<!comment><更多html

king<更多html

我正在使用以下代码:

    find_pointer = strstr(sourcecode, text2find);
strcpy(find_pointer, king);
printf("%s", sourcecode);

其中 text2find = "< !comment>";

然而,当我打印时,很明显我所有“king”之后的字符都被删除了……就好像它自动添加了一个终止字符一样。我该如何解决这个问题,以便 <更多 html 保持原样?

编辑::::::我使用了 strncpy 并设置了一些字符,以便不添加终止字符。这是最好的方法吗?

最佳答案

您基本上不能这样做,除非您要替换的东西大小完全相同。在这种情况下,您可以使用 memcpystrncpy

如果尺寸不同,您可以尝试以下方法:

char *buffer = malloc(size); // size should be big enough to store the whole final html code
find_pointer = strstr(sourcecode, text2find);
len = find_pointer - sourcecode;
memcpy (buffer, sourcecode, len);
memcpy (buffer + len, "king", 4);
memcpy (buffer + len + 4, find_pointer + 4, strlen(sourcecode) - len - strlen(text2find));
free(sourcecode);
sourcecode = buffer;

关于C编程: Replace an inner string using strcpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10874915/

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