我的代码:
void CopyString(char psSource[], char pcDestination[]) {
unsigned char ucCountCharPosition;
for(ucCountCharPosition = 0; psSource[ucCountCharPosition]; ucCountCharPosition++) {
pcDestination[ucCountCharPosition] = psSource[ucCountCharPosition];
}
printf("%s", pcDestination); }
int main() {
unsigned char psSource[] = "test";
unsigned char pcDestination[] = "";
CopyString(psSource, pcDestination);
return 0;
}
我对抛出异常有疑问:
运行时检查失败#2-围绕变量'pcDestination'进行堆栈 已损坏。
我认为这个循环是无限的,但是在psSource[ucCountCharPosition]
这个位置,我不能使用像sizeof之类的功能(由于我的作业要求)。
有什么想法要解决吗?
答案 0 :(得分:0)
unsigned char pcDestination[] = "";
这将在堆栈上定义一个1字节的数组,并将其初始化为全零。
您没有足够的空间分配给您要复制的字符串。
尝试:
unsigned char pcDestination[5];
您还有另一个问题:您的函数使目标字符串没有被nul终止。