Получение ядра сброшено?

#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");   

}

Подал заявку, которая выдает ошибку ошибки сегментации (ядро сброшено) после первого ввода-вывода ********** ДОБРО ПОЖАЛОВАТЬ В AZIZIYAH CREATIONS**********

Пожалуйста, введите данные клиента. Пожалуйста, введите ИМЯ: ошибка сегментации asd (ядро сброшено)

пожалуйста, помогите пожалуйста

1 ответ

Решение

Назначение head->custName вызывает ваш сбой: вам нужно выделить память для head прежде чем вы можете написать что-то туда, куда он указывает. Если вы этого не сделаете, ваша программа падает. Вы можете выделить память для head с malloc() как это:

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

Не забудьте вставить соответствующий код обработки ошибок.

Другие вопросы по тегам