我正在尝试使用 printf
系列函数替换/替换较大字符串中的子字符串,但不知道为什么它不起作用。
uint64_t end = 100000;
char *bigchar = "This is a try $TIME_ELAPSED to replace using sprintf";
char *pPos = strstr(bigchar, "$TIME_ELAPSED");
sprintf(pPos, " %7ld ms. ", end);
但我在 sprintf
行中遇到了段错误(memcpy
失败),$TIME_ELAPSED
和 %7ld ms .
有 13 个字符的长度。
此外,用这个更改 sprintf
也会出现段错误。
sprintf(bigchar, "%.*s% 7ld ms. %s", (int)(pPos-bigchar), bigchar, end, pPos+13 );
最佳答案
pPos
指向 bigchar
缓冲区中的一个位置,并且此缓冲区是只读的,因为它包含字符串文字。在 sprintf
调用中,您尝试修改此只读缓冲区。
关于c - 为什么我不能使用 printf 格式来替换字符串中的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354562/