我已使用以下代码将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);
现在,我的目标是用已经定义的char字符串“ king”替换数组中的某个注释。例如。
至
国王
我正在使用以下代码:
find_pointer = strstr(sourcecode, text2find);
strcpy(find_pointer, king);
printf("%s", sourcecode);
其中text2find =“ ”;
但是,当我打印时,很明显,我所有超过“国王”的字符都被删除了,就像自动添加了终止字符一样。如何解决此问题,使保持不变?
编辑:::::
我使用了strncpy并设置了许多字符,以便不添加终止字符。这是最好的方法吗?
最佳答案
您基本上无法做到这一点,除非您要替换的东西大小完全相同。在这种情况下,您可以使用memcpy
或strncpy
。
如果大小不同,您可以尝试以下方法:
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;