편집 기록

편집 기록
  • 프로필 전대호님의 편집
    날짜2018.11.20

    c언어 자꾸 오류가 뜨는데 못잡겠습니다 ㅠㅠ


    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct node
    {
        int number;
        char name[20];
        char gender;
        char address[80];
    
        struct node *next;
    }NODE;
    
    void remove_node(NODE **head, NODE *p, NODE *removed);
    void add_node(NODE **head, NODE *p, NODE *new_node);
    NODE *create_node(int number, char *name, char gender, char*address, NODE *next);
    int search_node(NODE *head, int number);
    NODE *sorting(NODE *head);
    NODE *sorting_rev(NODE *head);
    
    NODE *fr();
    
    void print();
    void add();
    void remove_();
    
    int main()
    {
        int n = 1;
    
        while (n != 0)
        {
            printf("1 : 출력, 2 : 추가, 3 : 삭제, 0 : 종료\n");
            scanf("%d", &n);
    
            switch (n)
            {
            case 1:
                print();
                break;
    
            case 2:
                add();
                break;
    
            case 3:
                remove_();
                break;
    
            default:
                break;
            }
        }
    
        return 0;
    }
    
    void remove_()
    {
        NODE *head = NULL, *temp1 = NULL, *temp2 = NULL, *p = NULL;
    
        p = sorting(head);
        head = p;
    
        temp1 = head;
        temp2 = head;
    
        int i, n = 0;
    
        printf("삭제할 항목의 번호를 입력하세요\n");
        scanf("%d", &n);
    
        if (n == 1) {
            remove_node(&head, NULL, temp2);
            temp1 = head;
        }
        else
        {
            for (i = 2; i < n; i++)
            {
                temp1 = temp1->next;
                temp2 = temp2->next;
            }
            temp2 = temp2->next;
    
            remove_node(&head, temp1, temp2);
            temp1 = temp1->next;
    
            while (head != NULL)
            {
                temp1->number = temp1->number - 1;
                temp1 = temp1->next;
            }
    
            FILE *file;
            file = fopen("C:\\Users\\xoghk\\Desktop\\bs_data.txt", "wt");
    
            while (head != NULL)
            {
                fprintf(file, "%d %s %c %s\n", head->number, head->name, head->gender, head->address);
                head = head->next;
            }
    
            fclose(file);
        }
    }
    
    void add()
    {
        NODE *head = NULL, *p = NULL, *p1 = NULL;
        head = fr();
        p = sorting_rev(head);
    
        int number = 0;
        char name[20] = { 0 };
        char gender = NULL;
        char address[80] = { 0 };
    
        printf("번호,이름, 성별, 주소를 입력하세요 : ");
        scanf("%s %c %s", name, &gender, address);
    
        if (p == NULL)
        {
            p->number = 0;
        }
    
        add_node(&p, NULL, create_node(p->number + 1, name, gender, address, NULL));
    
        p1 = sorting(p);
    
        FILE *file;
        file = fopen("C:\\Users\\xoghk\\Desktop\\bs_data.txt", "wt");
    
        while (p1 != NULL)
        {
            fprintf("file", "%d %s %c %s\n", p1->number, p1->name, p1->gender, p1->address);
            p1 = p1->next;
        }
    
        fclose(file);
    }
    
    NODE *fr()
    {
        FILE *file;
        file = fopen("D:\\db.txt.txt", "rt");
    
        NODE *head = NULL;
        int number = 0;
        char name[20] = { 0 };
        char gender = NULL;
        char address[80] = { 0 };
    
        while (1)
        {
            if (fscanf(file,"%d %s %c %s", &number, name, &gender, address) == -1)
            {
                break;
            }
    
            add_node(&head, NULL, create_node(number, name, gender, address, NULL));
    
        }
    
        fclose(file);
    
        return head;
    
    }
    
    void print()
    {
        NODE *head = NULL, *p = NULL;
        head = fr();
        p = sorting(head);
    
        while (p != NULL)
        {
            printf("%d %s %c %s\n", p->number, p->name, p->gender, p->address);
            p = p->next;
        }
    
    }
    
    NODE *sorting_rev(NODE *head)
    {
        NODE *temp1 = NULL, *temp2 = NULL, *temp3 = NULL, *sort = NULL;
    
        int i, count = 0;
    
        temp1 = head;
        temp3 = head;
    
        while (temp1 != NULL)
        {
            temp2 = temp1->next;
            while (temp2 != NULL)
            {
                if (temp1->number > temp2->number)
                {
                    temp1 = temp2;
                }
                temp2 = temp2->next;
            }
            add_node(&sort, NULL, create_node(temp1->number, temp1->name, temp1->gender, temp1->address, NULL));
    
            count = search_node(head, temp1->number);
    
            for (i = 0; i < count - 1; i++)
            {
                temp3 = temp3->next;
            }
    
            if (count == 0)
            {
                remove_node(&head, NULL, temp1);
            }
            else
            {
                remove_node(&head, temp3, temp1);
            }
    
            temp1 = head;
            temp3 = head;
        }
    
    
        return sort;
    }
    
    NODE *sorting(NODE *head)
    {
        NODE *temp1 = NULL, *temp2 = NULL, *temp3 = NULL, *sort = NULL;
    
        int i, count = 0;
    
        temp1 = head;
        temp3 = head;
    
        while (temp1 != NULL)
        {
            temp2 = temp1->next;
            while (temp2 != NULL)
            {
                if (temp1->number < temp2->number)
                {
                    temp1 = temp2;
                }
    
                temp2 = temp2->next;
            }
            add_node(&sort, NULL, create_node(temp1->number, temp1->name, temp1->gender, temp1->address, NULL));
    
            count = search_node(head, temp1->number);
    
            for (i = 0; i < count - 1; i++)
            {
                temp3 = temp3->next;
            }
    
            if (count == 0)
            {
                remove_node(&head, NULL, temp1);
            }
            else
            {
                remove_node(&head, temp3, temp1);
            }
    
            temp1 = head;
            temp3 = head;
        }
    
        return sort;
    
    }
    
    int search_node(NODE *head, int number)
    {
        int count = 0;
        NODE *p;
        p = head;
    
        while (p != NULL)
        {
            if (p->number == number)
            {
                return count;
            }
    
            p = p->next;
            count++;
        }
    
        return count;
    
    }
    
    void remove_node(NODE **head, NODE *p, NODE *removed)
    {
        if (p == NULL)
        {
            *head = (*head)->next;
        }
        else
        {
            p->next = removed->next;
        }
    
        free(removed);
    }
    
    void add_node(NODE **head, NODE *p, NODE *new_node)
    {
        if (*head == NULL)
        {
            new_node->next = NULL;
            *head = new_node;
        }
        else if (p == NULL)
        {
            new_node->next = *head;
            *head = new_node;
        }
        else
        {
            new_node->next = p->next;
            p->next = new_node;
        }
    }
    
    NODE *create_node(int number, char *name, char gender, char*address, NODE *next)
    {
        NODE *new_node = NULL;
        new_node = (NODE *)malloc(sizeof(NODE));
    
        new_node->number = number;
        strcpy(new_node->name, name);
        new_node->gender = gender;
        strcpy(new_node->address, address);
        new_node->next = next;
    
        return new_node;
    }
    

    p == null 일때 p->number = 0 여기서 부터 nullptr이라고 오류가 뜨는데 잡지를 못하겠습니다 ㅠㅠ 도주세요...

  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.11.19

    c언어 자꾸 오류가 뜨는데 못잡겠습니다 ㅠㅠ


    include

    include

    include

    typedef struct node { int number; char name[20]; char gender; char address[80];

    struct node *next;
    

    }NODE;

    void remove_node(NODE **head, NODE *p, NODE *removed); void add_node(NODE **head, NODE *p, NODE *new_node); NODE *create_node(int number, char *name, char gender, char*address, NODE *next); int search_node(NODE *head, int number); NODE *sorting(NODE *head); NODE *sorting_rev(NODE *head);

    NODE *fr();

    void print(); void add(); void remove_();

    int main() { int n = 1;

    while (n != 0)
    {
        printf("1 : 출력, 2 : 추가, 3 : 삭제, 0 : 종료\n");
        scanf("%d", &n);
    
        switch (n)
        {
        case 1:
            print();
            break;
    
        case 2:
            add();
            break;
    
        case 3:
            remove_();
            break;
    
        default:
            break;
        }
    }
    
    return 0;
    

    }

    void remove_() { NODE *head = NULL, *temp1 = NULL, *temp2 = NULL, *p = NULL;

    p = sorting(head);
    head = p;
    
    temp1 = head;
    temp2 = head;
    
    int i, n = 0;
    
    printf("삭제할 항목의 번호를 입력하세요\n");
    scanf("%d", &n);
    
    if (n == 1) {
        remove_node(&head, NULL, temp2);
        temp1 = head;
    }
    else
    {
        for (i = 2; i < n; i++)
        {
            temp1 = temp1->next;
            temp2 = temp2->next;
        }
        temp2 = temp2->next;
    
        remove_node(&head, temp1, temp2);
        temp1 = temp1->next;
    
        while (head != NULL)
        {
            temp1->number = temp1->number - 1;
            temp1 = temp1->next;
        }
    
        FILE *file;
        file = fopen("C:\\Users\\xoghk\\Desktop\\bs_data.txt", "wt");
    
        while (head != NULL)
        {
            fprintf(file, "%d %s %c %s\n", head->number, head->name, head->gender, head->address);
            head = head->next;
        }
    
        fclose(file);
    }
    

    }

    void add() { NODE *head = NULL, *p = NULL, *p1 = NULL; head = fr(); p = sorting_rev(head);

    int number = 0;
    char name[20] = { 0 };
    char gender = NULL;
    char address[80] = { 0 };
    
    printf("번호,이름, 성별, 주소를 입력하세요 : ");
    scanf("%s %c %s", name, &gender, address);
    
    if (p == NULL)
    {
        p->number = 0;
    }
    
    add_node(&p, NULL, create_node(p->number + 1, name, gender, address, NULL));
    
    p1 = sorting(p);
    
    FILE *file;
    file = fopen("C:\\Users\\xoghk\\Desktop\\bs_data.txt", "wt");
    
    while (p1 != NULL)
    {
        fprintf("file", "%d %s %c %s\n", p1->number, p1->name, p1->gender, p1->address);
        p1 = p1->next;
    }
    
    fclose(file);
    

    }

    NODE *fr() { FILE *file; file = fopen("D:\db.txt.txt", "rt");

    NODE *head = NULL;
    int number = 0;
    char name[20] = { 0 };
    char gender = NULL;
    char address[80] = { 0 };
    
    while (1)
    {
        if (fscanf(file,"%d %s %c %s", &number, name, &gender, address) == -1)
        {
            break;
        }
    
        add_node(&head, NULL, create_node(number, name, gender, address, NULL));
    
    }
    
    fclose(file);
    
    return head;
    

    }

    void print() { NODE *head = NULL, *p = NULL; head = fr(); p = sorting(head);

    while (p != NULL)
    {
        printf("%d %s %c %s\n", p->number, p->name, p->gender, p->address);
        p = p->next;
    }
    

    }

    NODE *sorting_rev(NODE *head) { NODE *temp1 = NULL, *temp2 = NULL, *temp3 = NULL, *sort = NULL;

    int i, count = 0;
    
    temp1 = head;
    temp3 = head;
    
    while (temp1 != NULL)
    {
        temp2 = temp1->next;
        while (temp2 != NULL)
        {
            if (temp1->number > temp2->number)
            {
                temp1 = temp2;
            }
            temp2 = temp2->next;
        }
        add_node(&sort, NULL, create_node(temp1->number, temp1->name, temp1->gender, temp1->address, NULL));
    
        count = search_node(head, temp1->number);
    
        for (i = 0; i < count - 1; i++)
        {
            temp3 = temp3->next;
        }
    
        if (count == 0)
        {
            remove_node(&head, NULL, temp1);
        }
        else
        {
            remove_node(&head, temp3, temp1);
        }
    
        temp1 = head;
        temp3 = head;
    }
    
    
    return sort;
    

    }

    NODE *sorting(NODE *head) { NODE *temp1 = NULL, *temp2 = NULL, *temp3 = NULL, *sort = NULL;

    int i, count = 0;
    
    temp1 = head;
    temp3 = head;
    
    while (temp1 != NULL)
    {
        temp2 = temp1->next;
        while (temp2 != NULL)
        {
            if (temp1->number < temp2->number)
            {
                temp1 = temp2;
            }
    
            temp2 = temp2->next;
        }
        add_node(&sort, NULL, create_node(temp1->number, temp1->name, temp1->gender, temp1->address, NULL));
    
        count = search_node(head, temp1->number);
    
        for (i = 0; i < count - 1; i++)
        {
            temp3 = temp3->next;
        }
    
        if (count == 0)
        {
            remove_node(&head, NULL, temp1);
        }
        else
        {
            remove_node(&head, temp3, temp1);
        }
    
        temp1 = head;
        temp3 = head;
    }
    
    return sort;
    

    }

    int search_node(NODE *head, int number) { int count = 0; NODE *p; p = head;

    while (p != NULL)
    {
        if (p->number == number)
        {
            return count;
        }
    
        p = p->next;
        count++;
    }
    
    return count;
    

    }

    void remove_node(NODE **head, NODE *p, NODE *removed) { if (p == NULL) { *head = (*head)->next; } else { p->next = removed->next; }

    free(removed);
    

    }

    void add_node(NODE **head, NODE *p, NODE *new_node) { if (*head == NULL) { new_node->next = NULL; *head = new_node; } else if (p == NULL) { new_node->next = *head; *head = new_node; } else { new_node->next = p->next; p->next = new_node; } }

    NODE *create_node(int number, char *name, char gender, char*address, NODE *next) { NODE *new_node = NULL; new_node = (NODE *)malloc(sizeof(NODE));

    new_node->number = number;
    strcpy(new_node->name, name);
    new_node->gender = gender;
    strcpy(new_node->address, address);
    new_node->next = next;
    
    return new_node;
    

    }

    p == null 일때 p->number = 0 여기서 부터 nullptr이라고 오류가 뜨는데 잡지를 못하겠습니다 ㅠㅠ 도주세요...