Не читается файл

Тема в разделе "LANGS.C", создана пользователем ajak, 5 сен 2008.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    А по другому никак? Имхо в паскале проще было. Там как-то на это не смотрелось. А тут что ко всем записям прибавлять '\0'
     
  2. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Вот так:
    Код (Text):
    1. #include <stdio.h>
    2. #include <string.h>
    3.  
    4. struct header
    5. {
    6.     char stack[5];
    7.     char pc[5];
    8. };
    9.  
    10. void main()
    11. {
    12.     header hdr, hdr2;
    13.     FILE *f;
    14.     strcpy(hdr.stack, "1234");
    15.     strcpy(hdr.pc, "5678");
    16.     f = fopen("1.dat", "wb");
    17.     fwrite(&hdr, 1, sizeof(header), f);
    18.     fclose(f);
    19.  
    20.     f = fopen("1.dat", "rb");
    21.     fread(&hdr2, 1, sizeof(header), f);
    22.     fclose(f);
    23.     printf("%s %s", hdr2.stack, hdr2.pc);
    24. }
    Хотя, как уже писали, для хранения числовых данных лучше использовать числовые типы. И при записи структур в файлы не забывать про выравнивание членов структур(см. опции компилятора про struct member alignment), иначе будут записаны "ненужные" байты или формат файла получится несовместимым