странный fwrite()

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

  1. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    есть такой кусок кода:

    Код (Text):
    1.  
    2.          char input[size];
    3.          FILE *pfile = fopen("test","w");
    4.          idx = idx_init;
    5.  
    6.          for (i = 0; i < logo_height; i++) {
    7.                 fwrite(input + idx, 1, logo_width, pfile);
    8.                 idx += width;
    9.          }
    10.          fclose(pfile);
    по идее размер файла должен быть равен logo_width * logo_height, но при значениях например 24 * 24 = 576,
    иногода получается 576 а иногда 589. Как я выяснил это зависит от начального значения idx, а почему и как
    зависит непойму :-\
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    letopisec
    Файл по умолчанию открывается в текстовой моде. Поэтому если среди данных попадаются \n \r, то в файл запишется кое-какой "мусор".
    Добавлено
    При этом также учитывается значение глобальной переменной _fmode
     
  3. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    спасибо.
     
  4. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Сделай fopen("test","wb");