我用谷歌搜索了很多,花了大约2个小时来修复这个错误。
我得到以下错误:
"
运行时检查失败#2-变量“buffer”周围的堆栈已损坏。
"
我知道这与我的指针、sprintf\s函数或类似的函数有关。这个简单的程序应该只是
','
具有
'-'
.
我希望有人能给我一个提示来解决这个问题。我知道存在很多这样的问题,但没有一个能帮我纠正这个错误。
#include "stdafx.h"
#include <stdio.h>
int strReplace(char *buffer, const rsize_t sizeBuffer,
char *source, const rsize_t sizeSource,
const char *substring, const rsize_t sizeSubstring,
const char *replace, const rsize_t sizeReplace)
{
if (sizeBuffer < sizeSource || sizeBuffer < sizeReplace || sizeSource < sizeSubstring)
return -1;
char *p;
p = strstr(source, substring);
while (p != NULL)
{
strncpy_s(buffer, sizeBuffer, source, p - source);
buffer[p - source] = '\0';
sprintf_s(buffer + (p - source), sizeBuffer, "%s%s", replace, p + strlen(substring));
strncpy_s(source, sizeSource, buffer, sizeBuffer);
p = strstr(source, substring);
}
return 0;
}
int myFunc(char *source, const rsize_t sizeSource)
{
char *substring = ",";
char *replace = "-";
char buffer[100];
strReplace(&buffer, 100, source, sizeSource,
substring, 2, replace, 2);
return 0;
}
int main()
{
char input[25] = "1,2,3,4,5,6,7,8,9,0";
printf("input: %s\n", input);
myFunc(&input, 25);
_getch();
return 0;
}