is there a function like sizeof that can be used at run time not compile time?

This is a discussion on is there a function like sizeof that can be used at run time not compile time? within the C Programming forums, part of the General Programming Boards category; I am trying to make a program that reads several (lets say eight) bytes from a file into an array ...

  1. #1
    Registered User
    Join Date
    Mar 2012
    Posts
    27

    is there a function like sizeof that can be used at run time not compile time?

    I am trying to make a program that reads several (lets say eight) bytes from a file into an array but what if there is only a few bytes left (lets say three)?
    Is an array the best option for doing this and if so how do I do a sizeof to determine how many bytes are left in the file.
    I am using C not C++ but is there a way to do it in either language and which one should I be using? I don't like OOP.
    I will be reading from the file into long long int or hex.

  2. #2
    and the hat of wrongness Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    32,656
    First of all, sizeof is an operator, not a function.
    And no, there is no way to determine the 'size' of a bit of data.

    You need something like this
    Code:
    struct fileRecord {
        int numValidBytes;
        unsigned char data[8];
    };
    You fread() a max of 8 bytes into rec.data, and you use the return result of fread() to update rec.numValidBytes

    This you then pass around to whoever needs to know.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.
    I support http://www.ukip.org/ as the first necessary step to a free Europe.

  3. #3
    Registered User
    Join Date
    Aug 2010
    Location
    Poland
    Posts
    682
    You have to store the number of bytes in a separate (unsigned integer) variable. Neither C nor C++ have run-time sizeof.
    If you have a buffer which can be of a fixed size, you can use a static array. If you need a variable-length block of memory, use malloc or variable-length array (C99 only).
    I never put signature, but I decided to make an exception.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Optimizing out virtual function calls at compile-time
    By golfinguy4 in forum C++ Programming
    Replies: 6
    Last Post: 01-26-2012, 12:35 AM
  2. Getting compile time.
    By ThatDudeMan in forum C Programming
    Replies: 2
    Last Post: 10-13-2010, 12:15 PM
  3. Using sizeof( long ) at compile time?
    By cpjust in forum C Programming
    Replies: 16
    Last Post: 11-14-2007, 12:22 PM
  4. Compile-Time Help
    By brayden37 in forum C++ Programming
    Replies: 0
    Last Post: 10-11-2001, 03:10 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21