Не читается файл. Почему?

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

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Вот собственно исходник

    Хочу видеть его внутренности в виде хексов. Ничегоне получается :dntknw:


    #include <stdio.h>
    #include <conio.h>
    #include <string.h>

    int main()
    {
    FILE *rom;
    char c[20];
    rom = fopen("c:\\1.txt","r");
    if (rom) printf("\n123"); // для проверки
    fread(c,2,2,rom);
    printf("%x",rom);

    return 1;
    }


    Подскажите что не так
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    ajak
    Запускать влом, но может "fopen("c:\\1.txt","rb");" ?
     
  3. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Не не хош. Это режим доступа к фалу. Бинарный. То же не хляет. Не знаю что ещё и придумать.
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    нафига выводить указатель на структуру FILE, есле надо вывести содержимое считанное в массив char c[20];?
     
  5. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    ajak
    по-порядку:
    ты открываешь файл, считываешь с него нек. данные в свой массив,
    а затем зачем-то делаешь printf("%x", хенлд_открытого_файла);
    что ты ожидаешь увидеть?? ведь тебе содержимое самого полученного массива вывести надо.
     
  6. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Freeman опередил:)
     
  7. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    пардон народ это я чёт другой исходник залил
    есттественно там буфер
     
  8. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    #include <stdio.h>
    int main()
    {
    FILE *rom;
    char c[20];
    rom = fopen("c:\\1.txt","r");
    if (rom) printf("\n123"); // для проверки
    fread(c,1,1,rom);/////////////<= неработает
    printf("%x",с); ////////////// Выводит почему то два байта ff23
    приразных файлах, которые открываю

    return 1;
    }
     
  9. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    зачем темы плодить?
     
  10. fdheu4fs

    fdheu4fs New Member

    Публикаций:
    0
    Регистрация:
    6 сен 2008
    Сообщения:
    4
    Звездец господа.

    fread(void* buffer, size_t size, size_t count, FILE *stream)

    А теперь TC внимательно посмотри, что ты написал и не только касательно чтения.
     
  11. jaja

    jaja New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2008
    Сообщения:
    243
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    FILE *rom;
    char *c;
    rom = fopen("c:\\1.txt","r");
    if (rom) printf("\n123"); // для проверки
    fseek (rom, 0 , SEEK_END);
    long lSize = ftell (rom);
    rewind (rom);
    c = (char*) malloc (sizeof(char)*lSize);
    fread (c,1,lSize,rom);
    с[lSize]=0;
    printf("%s",с);
    free(c);
    fclose(rom);
    return 1;
    }

    как-то так, приоверки еще добавить можно.
     
  12. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    ухты кокой интересный способ получения размера файла :))) есле не ошибаюсь одно из полей структуры FILE уже содержит его размер, как в принципе и много чего другого полезного.
    тоесть это вы считаете проверкой?

    неплохо бы исчо проверку после выделения памяти
     
  13. jaja

    jaja New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2008
    Сообщения:
    243
    Код (Text):
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int _tmain(int argc, _TCHAR* argv[])
    4. {
    5.     long lSize=0;
    6.     unsigned char * buf;
    7.     size_t res;
    8.     FILE * f = fopen("C:\\text.asm","rb");
    9.     if(NULL==f)
    10.     {
    11.         fputs("Couldn't open file\n",stderr);
    12.         exit(1);
    13.     }
    14.     fseek(f,0,SEEK_END);
    15.     lSize = ftell(f);
    16.     rewind(f);
    17.     buf = (unsigned char *)malloc(lSize);
    18.     if(NULL==buf)
    19.     {
    20.         fputs("Couldn't allocate memory\n",stderr);
    21.         exit(1);
    22.     }
    23.     res = fread(buf,1,lSize,f);
    24.     if(res!=lSize)
    25.     {
    26.         fputs("Error while reading file\n",stderr);
    27.         exit(1);
    28.     }
    29.         fclose(f);
    30.         long lLines =lSize/16+1;
    31.     long lCnt = 0;
    32.     for(long i = 0;i<lLines;++i)
    33.     {
    34.         lCnt = 16*i;
    35.         if(lCnt==lSize)
    36.             break;
    37.         printf("%08X\t",lCnt);
    38.         for(int j = 0;j<16;++j)
    39.         {          
    40.             if(lCnt==lSize)
    41.                 break;
    42.             printf("%02X ",buf[lCnt]);
    43.             lCnt++;
    44.  
    45.         }
    46.         printf("\n");
    47.     }
    48.         free(buf);
    49.     return 0;
    50. }
    В виде хексов. По 16 в ряд.
     
  14. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Сенкс