直接上代码
#include <stdio.h>
#include <string.h>
void foo(char* info)
{
strcat(info, "\n");
// do something
printf("%s", info);
}
int main(int argc, char* argv[])
{
char s1[64] = "It's cold.";
char s2[] = "It's raining.";
foo(s1);
foo(s2);
return 0;
}
有问题吗?
运行效果如下:
嗯,看起来还是正常的,难道不是吗?
代码改一下
前面只是在传入的字符串后面加了一个换行符。现在我们多加一些字符串(其他部分保持不变):
void foo(char* info)
{
strcat(info, " 2015:12:20 16:50:00\n");
// do something
printf("%s", info);
}
运行结果:
奇怪,怎么看起来还是正常的?!
继续折腾
再改成下面的样子:
#include <stdio.h>
#include <string.h>
void foo(char* info)
{
strcat(info, " 2015:12:20 16:50:00\n");
// do something
printf("%s", info);
}
int main(int argc, char* argv[])
{
char s1[64] = "It's cold.";
char s2[] = "It's raining.";
foo(s1);
foo(s2);
foo(s1);
return 0;
}
再运行一遍,哦:
好像不对劲了,真的不对劲。
更不对劲的
继续改调用方式:
#include <stdio.h>
#include <string.h>
void foo(char* info)
{
strcat(info, " 2015:12:20 16:50:00\n");
//strcat(info, "\n");
// do something
printf("%s", info);
}
int main(int argc, char* argv[])
{
char s1[64] = "It's cold.";
char s2[] = "It's raining.";
foo(s1);
foo(s2);
foo("It's hot.");
foo("It's sunny.");
foo(s1);
return 0;
}
即加了两句:
foo("It's hot.");
foo("It's sunny.");
运行结果:
潜伏
工作中,会遇到各种各样的代码,长期以来看起来运行得都很好,一些鼓掌都一直潜伏着。突然某一天,哦,就出现莫名其妙的问题。