hi
Please go through my complete code and help me out to solve it.
#define MYSPACE "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
char* GetResponsePrimaryElements(char cResBinary[])
{
int i, j, k,l;
int intTranFlag = iTranFlag;
int iiTemp;
int iiFIDCode;
char* cRes;
cRes = (char*) malloc(1550 * sizeof(MYSPACE));
for(i=0;i<strlen(cResBinary);i++)
{
if(cResBinary[i]=='1')
{
switch(i+1)
{
case 1:
fprintf(fp,"\nSecondary:\t\t\t[%s]", getsubstring(sReq,20,16));
if(intTranFlag == 0210)
strcat(cRes,"0210");
else if(intTranFlag == 0110)
strcat(cRes,"0110");
strcat(cRes,getsubstring(sReq,4,16));
strcat(cRes,getsubstring(sReq,20,16));
iLength = 36;
break;
case 2:
fprintf(fp,"\n Number:\t\t\t\t[%s]", getsubstring(sReq,iLength,20));
strcat(cRes,getsubstring(sReq,iLength,20));
iLength = iLength + 20;
break;
case 3:
fprintf(fp,"\nCode:\t\t\t\t[%s]", getsubstring(sReq,iLength,6));
strcat(cRes,getsubstring(sReq,iLength,6));
iLength = iLength + 6;
break;
case 4:
fprintf(fp,"\nAmount:\t\t\t[%s]", getsubstring(sReq,iLength,12));
strcat(cRes,getsubstring(sReq,iLength,12));
iLength = iLength + 12;
break;
case 5:
fprintf(fp,"\nAmount:\t\t\t[%s]", getsubstring(sReq,iLength,12));
strcat(cRes,getsubstring(sReq,iLength,12));
iLength = iLength + 12;
break;
case 6:
fprintf(fp,"\nAmount,:\t\t[%s] ", getsubstring(sReq,iLength,12));
strcat(cRes,getsubstring(sReq,iLength,12));
iLength = iLength + 12;
break;
case 7:
fprintf(fp,"\nDate:\t\t[%s] ", getsubstring(sReq,iLength,10));
strcat(cRes,getsubstring(sReq,iLength,10));
break;
case 10:
if(intTranFlag == 0110)
{
fprintf(fp,"\nRate:\t[%s]", getsubstring(sReq,iLength,15));
strcat(cRes,getsubstring(sReq,iLength,15));
}
break;
case 11:
fprintf(fp,"\nAudit Number:\t\t[%s]", getsubstring(sReq,123,6));
strcat(cRes,getsubstring(sReq,123,6));
break;
case 15:
fprintf(fp,"\nDate\t\t\t[####]");
strcat(cRes,"####");
break;
case 18:
if(intTranFlag == 0110)
{
fprintf(fp,"\nType:\t\t\t\t[%s]", getsubstring(sReq,153,4));
strcat(cRes,getsubstring(sReq,153,4));
}
break;
case 19:
fprintf(fp,"Code:\t[%s]", getsubstring(sReq,153,3));
strcat(cRes,getsubstring(sReq,153,3));
break;
case 21:
fprintf(fp,"\nCode:\t[%s]", getsubstring(sReq,156,3));
strcat(cRes,getsubstring(sReq,156,3));
break;
case 28:
fprintf(fp,"\nDate:\t\t[####]");
strcat(cRes,"####");
break;
case 32:
iiTemp = atoi(getsubstring(sReq,209,2));
strcat(cRes,getsubstring(sReq,209,2));
if(iiTemp <= 11)
{
fprintf(fp,"\n Code:\t\t[%s]", getsubstring(sReq,209+2,iiTemp));
strcat(cRes,getsubstring(sReq,209+2,iiTemp));
}
else
fprintf(fp,"\n*** Length violates maximum length of Bit 32 ***");
break;
case 33:
iiFIDCode = atoi(getsubstring(sReq,209+2+iiTemp,2));
strcat(cRes,getsubstring(sReq,209+2+iiTemp,2));
if(iiFIDCode <= 11)
{
fprintf(fp,"\nCode:\t\t[%s]", getsubstring(sReq,209+2+iiTemp,iiFIDCode));
strcat(cRes,getsubstring(sReq,209+2+iiTemp,iiFIDCode));
iiFIDCode = 209 + 2 + 2 + iiTemp + iiFIDCode;
}
else
fprintf(fp,"\n*** Length violates maximum length of Bit 33 ***");
break;
case 37:
fprintf(fp,"\n Number:\t\t[%s]", getsubstring(sReq,iiFIDCode,12));
strcat(cRes,getsubstring(sReq,iiFIDCode,12));
break;
case 38:
fprintf(fp,"\n Response:\t[######]");
strcat(cRes,"######");
break;
case 39:
fprintf(fp,"\nAction :\t\t[##]");
strcat(cRes,"##");
break;
case 41:
fprintf(fp,"\nCard :\t\t[%s]", getsubstring(sReq,231,16));
strcat(cRes,getsubstring(sReq,231,16));
break;
case 42:
fprintf(fp,"\nCard:\t[%s]", getsubstring(sReq,247,15));
strcat(cRes,getsubstring(sReq,247,15));
break;
case 48:
fprintf(fp,"\nAdditional Data:\t\t\t[############################]");
strcat(cRes,"###");
break;
case 49:
if(intTranFlag == 0210) /* Here am getting error, if i remove if condition it is working fine */
{
iiFIDCode = atoi(getsubstring(sReq,262,2));
l = atoi(getsubstring(sReq,262+2+iiFIDCode,3));
iiTemp = 262+2+iiFIDCode+l+3;
j = atoi(getsubstring(sReq,iiTemp,3));
k = atoi(getsubstring(sReq,iiTemp+j+3,3));
fprintf(fp,"\nCurrency Code Transaction:\t\t[%s]",getsubstring(sReq,iiTemp+j+k+3+3,3));
strcat(cRes,getsubstring(sReq,iiTemp+j+k+3+3,3));;
}
break;
case 50:
fprintf(fp,"\nCurrency:\t\t[%s]",getsubstring(sReq,iiTemp+j+k+3+3+3,3));
strcat(cRes,getsubstring(sReq,iiTemp+j+k+3+3+3,3));
break;
case 51:
fprintf(fp,"\nCurrency Code Billing:\t\t\t[%s]",getsubstring(sReq,iiTemp+j+k+3+3+3+3,3));
strcat(cRes,getsubstring(sReq,iiTemp+j+k+3+3+3+3,3));
break;
case 54:
fprintf(fp,"\nAm:\t\t\t[######]");
strcat(cRes,"######");
break;
case 62:
fprintf(fp,"\nAm:\t\t\t[%s]", getsubstring(sReq,iiTemp+j+k+3+3+3+3+3+16,12));
strcat(cRes,getsubstring(sReq,iiTemp+j+k+3+3+3+3+3+16,12));
break;
case 64:
fprintf(fp,"\nCurrency:\t\t[%s]", getsubstring(sReq,iiTemp+j+k+3+3+3+3+3+16+12,3));
strcat(cRes,getsubstring(sReq,iiTemp+j+k+3+3+3+3+3+16+12,3));
intTemp = iiTemp+j+k+3+3+3+3+3+16+12+3;
break;
default:
break;
}
}
}
}
return cRes;
}
when i used gdb a.out core
I got this message
Program terminated with signal 11, Segmentation fault.
(no debugging symbols found)...(no debugging symbols found)...#0 0xd03caa24 in strnlen ()
What is this error?
Last edited by AAKhan; 06-14-2011 at 07:00 AM..