Wherer is the Segmentation fault?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux