strcat:
// strcat
#include <stdio.h>
#include <string.h>
char *Strcat(char *dest, const char *src)
{
char *tmp = dest;
while ('\0' != *dest) {
dest++;
}
while ('\0' != (*dest++ = *src++)) {
;
}
return tmp;
}
int main(int argc, char **argv)
{
char string[100];
strcpy( string, "Hello world from " );
Strcat( string, "strcpy " );
Strcat( string, "and " );
Strcat( string, "strcat!" );
printf( "String = %s\n", string );
return 0;
}很奇怪,之前在VC6中调试时,在进入Strcat函数时,dest的值与string的值不一样,见下图:

我也问了同学,在他们机子上试了,竟然也出现这个问题,真的怀疑是不是bug?而如果直接运行,输出又是正确的,VS中调试、运行也都没错,不过后来重新在VC6中建工程、文件,又对了,真是费解。
上图中刚进Strcat函数dest的值就加了1,然后再按F11,dest值又加了1!之后的都很奇怪。
求高人指点。
本文探讨了在VC6环境中调试Strcat函数时遇到的奇怪现象:参数dest的值在函数开始时似乎发生了意外变化。虽然最终输出正确,但调试过程中出现的问题令人困惑。文章最后指出重建工程可以解决该问题。
1612

被折叠的 条评论
为什么被折叠?



