파일에서 연결 목록을 읽고 데이터를로드합니다.

Surjit

연결된 목록을 사용하여 사전을 구현하는 C 코드를 작성했습니다 (노드가 정렬 된 순서로 있음). 데이터를 파일에 저장하고 다음에 프로그램을 실행할 때 데이터를 다시로드 할 수 있기를 원합니다. 파일에서 데이터를로드하는 데 문제가 있습니다. 데이터를 읽고 쓰는 코드는 다음과 같습니다.

struct node{
    char word[20];
    char meaning[5][100]; //2D array for saving multiple meanings of a word
    struct node *next;
};

void ReadData(struct node *head)
{
    struct node *tail;
    FILE *fp = fopen("dictionary.data", "rb");
    if(fp == NULL)
    {
        printf("Error opening file..\n");
        return;
    }
    while(!feof(fp))
    {
        tail = (struct node*)calloc(1, sizeof(struct node));
        fread(tail->word, sizeof(head->word), 1, fp);
        fread(tail->meaning, sizeof(head->meaning), 1, fp);
        if(head == NULL) //for fresh run head is initialized with NULL
        {
            tail->next = head;
            head = tail;
        }
        else
        {
            head->next = tail;
            head = head->next;
        }
    }
    fclose(fp);
}

파일에서 연결된 목록으로 데이터를로드 할 수 없습니다. 코드가 작동하지 않습니다. 문제가 어디에 있는지 알아낼 수 없습니다 ..
파일에 데이터를 쓰는 방법 다음과 같습니다.

/*I think this code is working because size of the file increases after running the code*/
void WriteData(struct node *head)
{
    FILE *fp = fopen("dictionary.data", "wb");
    if(fp == NULL)
    {
        printf("Error opening file..\n");
        return;
    }
    while(head != NULL)
    {
        fwrite(head->word, sizeof(head->word), 1, fp);
        fwrite(head->meaning, sizeof(head->meaning), 1, fp);
        head = head->next;
    }
    fclose(fp);
}

sizeof대신을 사용 strlen했습니다. 문자열입니다. 끝에는 null 문자가 있습니다. 문자열에는 문제가 없습니다. 그래도 더 많은 메모리를 소비합니다.

블루 픽시

이것을 시도하십시오 (예상되지 않음) :

void ReadData(struct node **head){//or struct node *ReadData(void){ ... return head; }
    struct node temp = { .next = NULL };//{ {0}, {{0}}, NULL}
    struct node *hp, *curr;
    FILE *fp = fopen("dictionary.data", "rb");

    if(fp == NULL){
        printf("Error opening file..\n");
        return;
    }

    hp = *head;
    while(fread(temp.word, sizeof(temp.word), 1, fp) && fread(temp.meaning, sizeof(temp.meaning), 1, fp)){
        struct node *np = malloc(sizeof(*np));
        if(np == NULL){
            perror("couldn't make new node by malloc:");
            return ;//release list
        }
        *np = temp;

        if(hp == NULL){//for fresh run head is initialized with NULL
            curr = hp = np;
        } else {//If *head isn't NULL, you need to move to the last node first.
            curr = curr->next = np;
        }
    }
    fclose(fp);
    *head = hp;
}
//....................
int main(void){
    //...
    struct node *head = NULL;
    //...
    ReadData(&head);
    //...

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파일 목록에서 CSV를 읽고 열 (날짜)을 "돌연변이"합니다.

분류에서Dev

파일에서 파일 경로를 읽고 결합 된 단일 데이터 프레임을 만드는 방법은 무엇입니까?

분류에서Dev

특정 값인 python에서 시작하여 3,000 개의 파일을 읽고 pandas 데이터 프레임으로 연결합니다.

분류에서Dev

읽을 별도의 목록에 2 개의 파일을 추가하려고하는데 두 파일을 하나의 목록으로 결합해야합니다.

분류에서Dev

json 파일 스위프트에서 NSURL을로드하고이를 imageView에 연결합니다.

분류에서Dev

'읽기'를 사용하여 파일에서 연결된 목록으로 데이터를 읽는 (C) 함수를 어떻게 만들 수 있습니까?

분류에서Dev

여러 파일을 읽고 R에서 고유 한 행 결합

분류에서Dev

파일에서 결과 데이터를 읽고,로드하고, 비교하고, 디스플레이를 인쇄합니다.

분류에서Dev

iPhone이 인터넷에 연결되어있을 때 앱을 호출하고 서버에 데이터를 업로드합니다.

분류에서Dev

스프링 배치 : csv 파일을 읽고 결과를 다른 파일에 넣기 전에이 목록을 수정합니다.

분류에서Dev

연결된 목록에서 특정 항목을 검색하려고합니다.

분류에서Dev

Python은 파일을 읽고 분할 목록 데이터를 사전에 할당합니다.

분류에서Dev

연결 목록으로 문자열 파일을 어떻게 읽습니까? (씨)

분류에서Dev

Scala는 파일을 읽고 json 객체로 목록에로드합니다.

분류에서Dev

C에서 연결된 목록에 파일을 읽는 메모리 누수

분류에서Dev

PHP는 텍스트 파일에서 읽고 중복 항목을 결합

분류에서Dev

이중 연결 목록에서 데이터를 인쇄하려고하면 C ++ 프로그램이 충돌합니다.

분류에서Dev

파일에서 데이터를 읽고 목록 목록에 저장 Python

분류에서Dev

파일을 읽고 링크 된 목록으로 전달할 때 데이터 표현을 결정하려면 어떻게해야합니까?

분류에서Dev

폴더의 모든 txt 파일을 가져오고, 데이터 프레임에 연결하고, 파일 이름을 R에서 변수로 사용합니까?

분류에서Dev

C txt 파일에서 연결된 목록으로 데이터로드

분류에서Dev

C : 파일에서 연결된 목록으로 데이터로드

분류에서Dev

방금 C ++를 사용하여 연결된 목록에 대해 배우기 시작했습니다. 벡터를 사용하여 연결 목록을 만들려고합니다. 이 코드에 문제가있는 이유는 무엇입니까?

분류에서Dev

파이썬 : 각 줄에서 파일을 읽고 목록에 정수만 저장

분류에서Dev

Excel 파일을 업로드하고 읽고 Groovy Grails를 사용하여 데이터베이스에 데이터를 삽입합니다.

분류에서Dev

C에서 연결 목록을 파괴하지 않고 C에서 연결 목록을 탐색하는 방법은 무엇입니까?

분류에서Dev

ID 연결을 유지하면서 데이터 프레임 열을 목록 목록으로 변환하고 다시 데이터 프레임으로 변환

분류에서Dev

바이너리 파일의 데이터를 C의 연결된 목록으로 읽어들입니다 (접근 위반 읽기 위치)

분류에서Dev

단일 연결 목록을 하나의 목록으로 연결

Related 관련 기사

  1. 1

    파일 목록에서 CSV를 읽고 열 (날짜)을 "돌연변이"합니다.

  2. 2

    파일에서 파일 경로를 읽고 결합 된 단일 데이터 프레임을 만드는 방법은 무엇입니까?

  3. 3

    특정 값인 python에서 시작하여 3,000 개의 파일을 읽고 pandas 데이터 프레임으로 연결합니다.

  4. 4

    읽을 별도의 목록에 2 개의 파일을 추가하려고하는데 두 파일을 하나의 목록으로 결합해야합니다.

  5. 5

    json 파일 스위프트에서 NSURL을로드하고이를 imageView에 연결합니다.

  6. 6

    '읽기'를 사용하여 파일에서 연결된 목록으로 데이터를 읽는 (C) 함수를 어떻게 만들 수 있습니까?

  7. 7

    여러 파일을 읽고 R에서 고유 한 행 결합

  8. 8

    파일에서 결과 데이터를 읽고,로드하고, 비교하고, 디스플레이를 인쇄합니다.

  9. 9

    iPhone이 인터넷에 연결되어있을 때 앱을 호출하고 서버에 데이터를 업로드합니다.

  10. 10

    스프링 배치 : csv 파일을 읽고 결과를 다른 파일에 넣기 전에이 목록을 수정합니다.

  11. 11

    연결된 목록에서 특정 항목을 검색하려고합니다.

  12. 12

    Python은 파일을 읽고 분할 목록 데이터를 사전에 할당합니다.

  13. 13

    연결 목록으로 문자열 파일을 어떻게 읽습니까? (씨)

  14. 14

    Scala는 파일을 읽고 json 객체로 목록에로드합니다.

  15. 15

    C에서 연결된 목록에 파일을 읽는 메모리 누수

  16. 16

    PHP는 텍스트 파일에서 읽고 중복 항목을 결합

  17. 17

    이중 연결 목록에서 데이터를 인쇄하려고하면 C ++ 프로그램이 충돌합니다.

  18. 18

    파일에서 데이터를 읽고 목록 목록에 저장 Python

  19. 19

    파일을 읽고 링크 된 목록으로 전달할 때 데이터 표현을 결정하려면 어떻게해야합니까?

  20. 20

    폴더의 모든 txt 파일을 가져오고, 데이터 프레임에 연결하고, 파일 이름을 R에서 변수로 사용합니까?

  21. 21

    C txt 파일에서 연결된 목록으로 데이터로드

  22. 22

    C : 파일에서 연결된 목록으로 데이터로드

  23. 23

    방금 C ++를 사용하여 연결된 목록에 대해 배우기 시작했습니다. 벡터를 사용하여 연결 목록을 만들려고합니다. 이 코드에 문제가있는 이유는 무엇입니까?

  24. 24

    파이썬 : 각 줄에서 파일을 읽고 목록에 정수만 저장

  25. 25

    Excel 파일을 업로드하고 읽고 Groovy Grails를 사용하여 데이터베이스에 데이터를 삽입합니다.

  26. 26

    C에서 연결 목록을 파괴하지 않고 C에서 연결 목록을 탐색하는 방법은 무엇입니까?

  27. 27

    ID 연결을 유지하면서 데이터 프레임 열을 목록 목록으로 변환하고 다시 데이터 프레임으로 변환

  28. 28

    바이너리 파일의 데이터를 C의 연결된 목록으로 읽어들입니다 (접근 위반 읽기 위치)

  29. 29

    단일 연결 목록을 하나의 목록으로 연결

뜨겁다태그

보관