Calculation of n byte from the file in memory of the block, c++, VS13



  • Help me understand:

    Write a ancestral function that counts nBay from the file in memory that is assigned to the birth function by counting the block. Check for char, int, float, double.

    If you write a function with commentaries, I would appreciate it, but at least tell me where to dig.

    Here's what I found:

    #include "stdafx.h"
    #include <cstdio>
    #include <iostream>
    #include <cstdlib>
    #pragma warning(disable: 4996)
    

    int main()
    {
    FILE * ptrFile = fopen("file.txt", "rb");

    if (ptrFile == NULL)
    {
        fputs("Ошибка файла", stderr);
        exit(1);
    }
    
    // определяем размер файла
    fseek(ptrFile, 0, SEEK_END);                          // устанавливаем позицию в конец файла
    long lSize = ftell(ptrFile);                            // получаем размер в байтах
    rewind(ptrFile);                                       // устанавливаем указатель в конец файла
    //здесь задаем количество байтов для считывания
    long n = 5;
    char * buffer;
    if (lSize &gt;= n){
        buffer = (char*)malloc(sizeof(char) * n); // выделить память для хранения содержимого файла
        if (buffer == NULL)
        {
            fputs("Ошибка памяти", stderr);
            exit(2);
        }
    
        size_t result = fread(buffer, 1, lSize, ptrFile);       // считываем файл в буфер
        if (result != lSize)
        {
            fputs("Ошибка чтения", stderr);
            exit(3);
        }
    
        //содержимое файла теперь находится в буфере
        puts(buffer);
    }
    else {
        fputs("Превышено количество байтов для считывания!", stderr);
        exit(2);
    }
    // завершение работы
    fclose(ptrFile);
    free(buffer);
    return 0;
    

    }

    How do I see what you've read?



  • Frankly, I'm not sure I understand the question correctly... That's not it?

    template<typename T>
    T* read(istream&in)
    {
        T* t = new T;
        if (!in.read((char*)t,sizeof(T)))
        {
            delete t;
            t = nullptr;
        }
        return t;
    }
    

    int main(int argc, const char * argv[])
    {
    {
    ofstream out("test",ios::binary);
    char c = 'a';
    int i = 1234;
    double d = 3.1415926;
    out.write((const char*)&c,sizeof(c));
    out.write((const char*)&i,sizeof(i));
    out.write((const char*)&d,sizeof(d));
    }
    {
    ifstream in("test",ios::binary);
    char * c = read<char>(in);
    int * i = read<int>(in);
    double*d = read<double>(in);

        cout &lt;&lt; *c &lt;&lt; endl;
        cout &lt;&lt; *i &lt;&lt; endl;
        cout &lt;&lt; *d &lt;&lt; endl;
    }
    

    }




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2