This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Wherer is the Segmentation fault?


I am trying to dump a list of simple structure of two fields (roll
number and name of student) into a file but it is failing. here is the
code:

====================================

#include <stdio.h>

//structure of entry
typedef struct {
	int rollno;
	char name[60];
} entry;

entry *newentry;

entry* randomidxval(int x){
	printf("\n Entering randomidxval");
	entry *newentry;
	newentry->rollno = x;
	int i=0;
	for (i=0; i<60; i++) {
		newentry->name[i]=x;
	}
	printf("\n Exiting randomidxval");
	return newentry;
	
}

void create () {
	printf("\n Entering create");
	
	FILE *indx;
	//entry *temp;
	int i;
	indx = fopen("indx.dat", "wb" );
	if(indx) {
		for (i=0; i<2; i++) {
			printf("\n Entering loop");
			printf("\n Before allocation");
			//temp =  randomidxval(i);
			printf("\n After allocation");
			printf("\n Before condition");
			if(0 != fwrite (randomidxval(i), sizeof(entry), 1 , indx)) {
				printf("\n Write Successful %d", i);
			} else {
				printf("\n Write Failed");
			}
			printf("\n After Condition");
		}
	} else {
		printf("\n File open failed");
	}
	//temp=malloc(1);
	//free(temp);

/* Removing or altering the above two lines to free memory does not
affect the error */

	printf("\n Close %s", fclose(indx) == 0 ? "succeeded" : "failed");


/* It is in the following line that the problem exists. The fuction
never executes the last line and shows a segmentation fault. No matter
what I do, the function will fail before returning. I have tried a lot
but no help */

	printf("\n Exiting create");
	return;
}

void search () {
	printf("\n Entering search");
	printf("\n Exiting search");
	return;
	
}

int main() {
	printf("\n Entering main");
	
	printf ("\n Actions: \n 1. Create index \n 2. Search \n Please choose
your operation : ");
	int choice = 1;
	scanf ("%d", &choice);
	if(choice==1) {
		printf("\n Launching Create");
		create();
		printf("\n Create returned");
	} else {
		search();
	}
	printf (" \n ");
	//printf("\n %d \n", *choice);
	//free *choice;
	printf("\n Exiting main");
	return 0;
}

======================================


The problem is that the function create never returns!!

can someone tell me the reason and how to resolve it? the program
compiles well with no warnings or errors. 

My system is Fedora Linux 13 , 64-bit.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]