Sponsored Content
Top Forums Programming Why segmentation(coredump) in the following code in C? Post 302530472 by AAKhan on Tuesday 14th of June 2011 05:53:09 AM
Old 06-14-2011
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..
 

9 More Discussions You Might Find Interesting

1. AIX

Segmentation fault(coredump)

Hi All Can anybody help me? When ever am trying to run topas system gives me an error Segmentation fault(coredump) does anybody ahve solution for this? (4 Replies)
Discussion started by: vjm
4 Replies

2. Solaris

lpstat gives segmentation coredump error

hi everyone, we have solaris 8 in sun v480 server. it gives this error. Segmentation Fault(coredump) can anyone help me in this - urgently. Regards Karthik C (8 Replies)
Discussion started by: cksriramchandra
8 Replies

3. UNIX for Advanced & Expert Users

Segmentation (CoreDump) error !!

Hi all, I am trying to create few directories using script and its giving me segmentation error. #!/bin/ksh createDirectories() createDirectories() { cat dirs | \ while read line do mkdir... (16 Replies)
Discussion started by: varungupta
16 Replies

4. Shell Programming and Scripting

Segmentation Fault(coredump)

I'm getting this error when trying to run a Acucobol program thru UNIX.. Segmentation Fault(coredump) Precompiler error prevents compilation of xxxxxx.co. Please help me in this case.. (1 Reply)
Discussion started by: Manish4
1 Replies

5. AIX

Segmentation fault in nsgetcinfo in aix 64-bit c code

Hello, I am running on a AIX5.2 server with Oracle 10g and 9i. My code compiles and works fine in 32-bit mode. The same code compiles in 64-bit and runs good. The program catches CNTRL-C signal to terminate. Only on 64-bit code when i hit CNTRL-C, the program exits with segmentation... (0 Replies)
Discussion started by: sumesh0710
0 Replies

6. Programming

C code : Segmentation fault

Hi Friends, I have written a small code in C which performs the below operations Task : 1 ) read line by line from a file. 2 ) assuming 3th and 4th fields of the file as GN and GNTO 3 ) The target file should contain all the fields except GNTO. 4... (3 Replies)
Discussion started by: kiran_bhatter
3 Replies

7. Programming

this code for addind polynomials using linked lists showed segmentation error..any help pls..

the error occurs in the function() "add" used... #include<stdio.h> #include<malloc.h> struct node { int exp; int coef; struct node * link; }; struct node * create_list(struct node *,int,int); void display(struct node *); struct node * add(struct node *,struct node *); ... (3 Replies)
Discussion started by: mscoder
3 Replies

8. Programming

This code keeps giving me a segmentation fault why?

#include<stdlib.h> #include <pthread.h> #include "tlpi_hdr.h" #include <stdio.h> static volatile int glob = 0; static struct { pthread_t t1,t2; } *thread; static void * /* Loop 'arg' times incrementing 'glob' */ threadFunc(void *arg) { int loops = *((int *) arg); ... (1 Reply)
Discussion started by: fwrlfo
1 Replies

9. Programming

Why does this example C code run and yet SHOULD either not compile or give a segmentation fault?

Apologies for any typos... Well guys, been researching 'goto' in C and they say that you can't 'goto' labels in another function as a segmentation fault will occur. However I have found a way to 'goto' a label in another function that is NOT main() using the asm() function. As you know I... (14 Replies)
Discussion started by: wisecracker
14 Replies
All times are GMT -4. The time now is 09:51 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy