核心转储?

问题描述:

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

} 

必须首先输入 输出后使其产生分段故障(核心转储)的误差的应用 ********** WELCOME TO阿齐济耶CREATIONS **********核心转储?

请输入客户信息 请输入姓名:ASD 分割故障(核心转储)

好心帮助,请

+1

请务必写下您的问题,“请好心帮忙”不是问题。我们应该怎样帮助你?你想让我们做什么? – fuz

+0

请格式化您的代码。 –

分配给head->custName使你的崩溃:你需要分配内存˚F或head,然后才能将其写入指向的位置。如果你不这样做,你的程序崩溃。你可以用malloc()像这样head分配内存:

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

记住插入相应的错误处理代码。

+0

好了,但请您详细说明一下吗? – SayYid

+1

@SayYid您希望我详细说明一下吗? – fuz

+0

做了兄弟谢谢。 – SayYid