谢了一个方法,感觉很奇怪,大家看看问题出在哪里了。
这个是有问题的方法,该方法用了gcc的一个扩展库方法asprintf(),需要注意一下。
程序代码:void DebugIntArrayVar(char * label,char * varName,int * value,int rows,int cols)
{
char * debugFilePath=DEBUG_FILE_PATH;
char * newContent;
char * oldContent;
asprintf(&newContent,"Label %s :\n",label);
oldContent=newContent;
asprintf(&newContent,"%s%s :\n",oldContent,varName);
free(oldContent);
oldContent=newContent;
int i,j;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
asprintf(&newContent,"%s\t%d",oldContent,value[i*cols+j]);
free(oldContent); // 经调试此处报错。
oldContent=newContent;
}
asprintf(&newContent,"%s\n",oldContent);
free(oldContent);
oldContent=newContent;
}
AttachToFile(debugFilePath,oldContent); // 该方法用于将字符串写进文件中,可以注释掉。
free(oldContent);
return;
}在下面这个main()方法中调用没有问题
程序代码:int main(void)
{
int intArrayVar2[][10]={{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
DebugIntArrayVar("27","intArray2",&intArrayVar2[0][0],2,3);
return 0;
}但在下面这个main()方法中调用就有问题了。
这个方法也没做什么事情,没有实现完成,就是做了个计算“9876”*“9876”这样的运算。大概思路是用我们常用的竖式乘法的方法计算。没什么含金量,就是为了测试那个让人郁闷的方法正确不。
程序代码:#define MAXBIT 1024
int main(void)
{
char r[MAXBIT];
int n;
int r_len;
int temp;
char * base;
int i,j,k;
int * result_temp;
int * result;
strcpy(r,"9876");
r_len=strlen(r);
base=(char *)malloc(r_len+1);
for(i=0,j=r_len-1;i<r_len;i++,j--)
{
base[j]=r[i];
}
result_temp=(int *)malloc(2*r_len-1);
for(k=0;k<r_len;k++)
{
temp=0;
i=k;
j=0;
while(i>=0)
{
temp+=(base[i]-'0')*(base[j]-'0');
i--;
j++;
}
result_temp[k]=temp;
}
for(k=1;k<r_len;k++)
{
temp=0;
i=r_len-1;
j=k;
while(i>=0&&j<r_len)
{
temp+=(base[i]-'0')*(base[j]-'0');
i--;
j++;
}
result_temp[r_len+k-1]=temp;
}
// debug code
DebugIntArrayVar("63","result_temp",&result_temp[0],1,2*r_len-1);
result=(int *)malloc(2*r_len);
for(i=0;i<2*r_len-1;i++)
{
result[i]=result_temp[i];
}
result[2*r_len-1]=0;
for(i=0;i<2*r_len-1;i++)
{
result[i+1]+=result[i]/10;
result[i]%=10;
}
for(i=2*r_len-1;i>=0;i--)
{
printf("%d",result[i]);
}
printf("\n");
return 0;
}调试了半天没搞懂为什么多了。但是在标红的地方报的错。希望哪位朋友帮我看看,找找原因,最好能把代码改一下。
[ 本帖最后由 八画小子 于 2014-10-24 02:33 编辑 ]








