这个函数在另一个程序中运行良好,但在某些情况下,它会导致运行时错误,指出某个变量周围的堆栈已损坏,有时甚至没有发送到函数中。
char *strCpy(char *dest, const char *source) { // copy cstring
char *origin = dest; // non iterated address
while (*source || *dest) {
*dest = *source;
dest++;
source++;
}
return origin;
}函数的实现:
int main() {
std::cout << "Will it crash?\n";
char temp[255];
char b[255];
std::cin >> temp;
strCpy(b, temp);
std::cout << b;
std::cout << "end\n";
return 0;
}在这种情况下,temp是损坏的,但不一定是因为它被传递到函数中。除了这个之外,我在寻找问题上遇到了困难。
我之所以编写自己的复制函数,是因为项目的限制。我也不允许使用[]来索引数组
发布于 2018-06-15 15:39:09
您在循环条件中的逻辑是有缺陷的,并将导致。
目标的内容未初始化,因此是不确定的。在您的条件下,您根本不应该检查目标,只应该检查源:
while (*source) { ... }当然,您需要将终止符添加到目的地。这可以在循环之后完成,如下所示
*dest = '\0';https://stackoverflow.com/questions/50871059
复制相似问题