Получение ядра сброшено?
#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 */
}
Не забудьте вставить соответствующий код обработки ошибок.