Вот собственно исходник Хочу видеть его внутренности в виде хексов. Ничегоне получается #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; } Подскажите что не так
нафига выводить указатель на структуру FILE, есле надо вывести содержимое считанное в массив char c[20];?
ajak по-порядку: ты открываешь файл, считываешь с него нек. данные в свой массив, а затем зачем-то делаешь printf("%x", хенлд_открытого_файла); что ты ожидаешь увидеть?? ведь тебе содержимое самого полученного массива вывести надо.
#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; }
Звездец господа. fread(void* buffer, size_t size, size_t count, FILE *stream) А теперь TC внимательно посмотри, что ты написал и не только касательно чтения.
#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; } как-то так, приоверки еще добавить можно.
ухты кокой интересный способ получения размера файла )) есле не ошибаюсь одно из полей структуры FILE уже содержит его размер, как в принципе и много чего другого полезного. тоесть это вы считаете проверкой? неплохо бы исчо проверку после выделения памяти
Код (Text): #include <stdio.h> #include <stdlib.h> int _tmain(int argc, _TCHAR* argv[]) { long lSize=0; unsigned char * buf; size_t res; FILE * f = fopen("C:\\text.asm","rb"); if(NULL==f) { fputs("Couldn't open file\n",stderr); exit(1); } fseek(f,0,SEEK_END); lSize = ftell(f); rewind(f); buf = (unsigned char *)malloc(lSize); if(NULL==buf) { fputs("Couldn't allocate memory\n",stderr); exit(1); } res = fread(buf,1,lSize,f); if(res!=lSize) { fputs("Error while reading file\n",stderr); exit(1); } fclose(f); long lLines =lSize/16+1; long lCnt = 0; for(long i = 0;i<lLines;++i) { lCnt = 16*i; if(lCnt==lSize) break; printf("%08X\t",lCnt); for(int j = 0;j<16;++j) { if(lCnt==lSize) break; printf("%02X ",buf[lCnt]); lCnt++; } printf("\n"); } free(buf); return 0; } В виде хексов. По 16 в ряд.