SayYid SayYid - 3 months ago 25
C Question

Getting core dumped?

#include <stdio.h>
#include <cs50.h>
#include <stdbool.h>


typedef struct shop {

string custName;

string custAdd;

string custNum;

string custClothPrice;



struct shop* next;

}

shop;



int main (void)



{
struct shop* head;



head = NULL;

struct shop* pointer=NULL;


printf("**********WELCOME TO AZIZIYAH CREATIONS**********\n\n");

char cont = 'y';


printf("Please enter customer details\n");

printf("Please Enter NAME : ");



head->custName = GetString();

printf("Please Enter Address: ");

head->custAdd = GetString();

printf("Please Enter Cell No: ");

head->custNum = GetString();
printf("Please Enter Price : ");

head->custClothPrice = GetString();

return 0;

printf("Would you liked to add more customer(s)?: Y/N:");


cont = GetChar();

head->next = pointer;

if (cont == 'Y' || cont == 'y')



{

pointer = malloc(sizeof(shop));

pointer->next = NULL;

}
while (cont == 'y' || cont == 'Y' )

{

printf("Please enter customer details\n");

printf("Please Enter NAME : ");

pointer->custName = GetString();

printf("Please Enter Address: ");

pointer->custAdd = GetString();

printf("Please Enter Cell No: ");

pointer->custNum = GetString();

printf("Please Enter Price : ");

pointer->custClothPrice = GetString();

printf("Would you liked to add more customer(s)?: Y/N:");

cont = GetChar();
if (cont == 'Y' || cont == 'y')

{

pointer->next = malloc(sizeof(shop));
pointer = pointer ->next;

}



}

printf("\n\nDETAILS OF CUSTOMER ARE AS FOLLOWS:-\n");

struct shop* traverse;

traverse = head;

if (traverse->next == NULL)

printf("WAS FOUND NULL\n");



while (traverse->next != NULL)

{

printf("%s\n", traverse->custName);

printf("%s\n", traverse->custAdd);

printf("%s\n", traverse->custNum);

printf("%s\n", traverse->custClothPrice);

traverse = traverse->next;
}

printf("**********THANK YOU FOR VISITING**********\n");

}


Had made an application it producing an error of Segmentation fault (core dumped) after First Input
OutPut
**********WELCOME TO AZIZIYAH CREATIONS**********

Please enter customer details
Please Enter NAME : asd
Segmentation fault (core dumped)

kindly help please

Answer

The assignment to head->custName causes your crash: You need to allocate memory for head before you can write something to where it points to. If you don't do that, your program crashes. You can allocate memory for head with malloc() like this:

head = malloc(sizeof *head);
if (head == NULL) {
    /* error handling code here */
}

Remember to insert appropriate error handling code.