项目中自己实现了一个简单的http客户端,测试时发现上传至服务器的数据发生了错误,排查问题发现,在http组包的代码中忘记对字符串临时变量进行初始化操作。
写了如下测试代码:
//测试代码1:将未进行变量初始化操作的代码置于循环体中
#include <stdio.h>
#include <string.h>
int main()
{
int i=20;
while(i-->0)
{
char tmp[50];
int int_test;
if(19==i)
{
int_test=0;
tmp[0]='\0';
}
printf("tmp:%s\nint_test:%d\n",tmp,int_test);
char test[5]="";
sprintf(test,"%d",i);
strcat(tmp,test);
int_test+=i;
}
return 0;
}
//测试代码1: 输出
tmp:
int_test:0
tmp:19
int_test:19
tmp:1918
int_test:37
tmp:191817
int_test:54
tmp:19181716
int_test:70
tmp:1918171615
int_test:85
tmp:191817161514
int_test:99
tmp:19181716151413
int_test:112
tmp:1918171615141312
int_test:124
tmp:191817161514131211
int_test:135
tmp:19181716151413121110
int_test:145
tmp:191817161514131211109
int_test:154
tmp:1918171615141312111098
int_test:162
tmp:19181716151413121110987
int_test:169
tmp:191817161514131211109876
int_test:175
tmp:1918171615141312111098765
int_test:180
tmp:19181716151413121110987654
int_test:184
tmp:191817161514131211109876543
int_test:187
tmp:1918171615141312111098765432
int_test:189
tmp:19181716151413121110987654321
int_test:190
//测试代码2 : 将未进行变量初始化操作的代码置于某函数体中
#include <stdio.h>
#include <string.h>
void just_for_test(int i)
{
char tmp[50];
int int_test;
if(19==i)
{
int_test=0;
tmp[0]='\0';
}
printf("tmp:%s\nint_test:%d\n",tmp,int_test);
char test[5]="";
spr