Использование fread () для чтения структуры - PullRequest
0 голосов
/ 12 мая 2011

я пытаюсь использовать fread для ввода данных в эту структуру, я определил эту структуру как заголовок, подобный этому

    #ifndef__HEADER_H__
    #define__HEADER_H__
    struct input_par
    {
        char key[5];
        char key_node[5];
        char src_ip[15];
        char dst_ip[15];
        char src_port[5];
        char dst_port[5];
    };

    #endif

в моей основной функции, в файле input_data я сохранил эти данные

       @822!822!172.28.6.137!172.28.6.110!5000!6000| 

для меня @ означает начало данных и | означает конец действительных данных здесь, я хочу ввести 822 для ключа, 822 для key_node, 172.28.6.137 для src_ip и т. д. для 6000 в dst_port, я не могу сделать это для целей тестирования, я просто ввожу только 822 для ключа. Я использую fread в первый раз, пожалуйста, помогите

    #include"file_header"
    #include <stdio.h>
    main()
    {
        int i;
        struct input_par input_par;
        FILE *fp;
        fopen("input_data","r");
        if(*fp == "@")
        {
            while(*fp!= "!")
            {
                for(i=0;i<5;i++)
                {
                    fread(&input_par.key, sizeof(input_par),1,fp);
                    printf("%d\n",input_par.key);
                }

            }
        }
        fclose(fp);
    }

1 Ответ

0 голосов
/ 12 мая 2011

Ну, у вас есть ошибки в вашем коде. Как отметил @unaperson, это не использование FILE, и определенно вы должны узнать об этом .

Если вы собираетесь читать каждый символ в файле и интерпретировать @ как разделитель, вы можете использовать fgetc вместо fread, который используется для чтения больших кусков. Имейте в виду, что fgetc возвращает int, чтобы иметь возможность проверить состояние ошибки конца файла (вы больше не можете читать).

Вы можете прочитать каждое поле до следующего разделителя и сохранить его в соответствующем поле вашей структуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...