【发布时间】:2021-12-16 01:26:55
【问题描述】:
我不熟悉使用指针(以及 Visual Studio),我正在尝试创建一个函数,从 const 数组中删除空格 ' '。该函数应该返回另一个数组但没有空格。看起来很简单,代码在 Codeblocks 中工作,但在 Visual Studio 中它不断触发断点。知道我做错了什么吗?
char* removeSpaces(const char* text) {
int length = strlen(text);
char* clone = new char(strlen(text));
strcpy_s(clone,length+1, text);
int i = 0;
do {
if (clone[i] == ' ')
strcpy(clone + i, clone + i + 1);
i++;
} while (i < length);
return clone;
}
【问题讨论】:
-
您需要添加更多关于 Visual Studio 如何破坏的详细信息(屏幕截图或其他内容)
-
char* clone = new char(strlen(text));好像有点奇怪,你是说char* clone = new char[strlen(text)];吗? -
strcpy(clone + i, clone + i + 1);(复制重叠字符串)的行为未定义。它可能会起作用,它可能会可怕地爆炸,可能三者都有。 -
如果要使用 C++,请使用字符串。如果您使用的是字符串:remove_if(str.begin(), str.end(), isspace);
标签: c++ visual-studio dynamic-memory-allocation breakpoints