Evul Fread() Not Working =(

This is a discussion on Evul Fread() Not Working =( within the C++ Programming forums, part of the General Programming Boards category; Hello, struct Ip { char *ip; }; struct Container { struct Ip IpList[AllowedIps]; }; void putiplist(Container *cont) { FILE *fp; ...

  1. #1
    Unregistered
    Guest

    Angry Evul Fread() Not Working =(

    Hello,

    struct Ip {
    char *ip;
    };
    struct Container {
    struct Ip IpList[AllowedIps];
    };

    void putiplist(Container *cont) {
    FILE *fp;
    const char sig[] = "Contain File";
    fp = fopen("allowedips.lst", "wb");
    if ( fp == NULL )
    derror("PutIpList(): Null File Pointer");
    int y = fwrite (&sig, sizeof(const char), sizeof(sig), fp);
    int x = fwrite (cont, sizeof(struct Container), 1, fp);
    printf("[%d-%d]-[%s]\n", y, x, cont->IpList[1].ip);
    fclose(fp);
    }


    void getiplist(Container *cont) {
    FILE *lfp;
    char sig[12];
    lfp = fopen("allowedips.lst", "rb");
    if ( lfp == NULL )
    derror("GetIpList(): Null File Pointer");
    int y = fread (sig, sizeof(sig), 1, lfp);
    int x = fread (&cont, sizeof(struct Container), 1, lfp);
    printf("[%d-%d]-[%s]\n", y, x, cont->IpList[1].ip);
    fclose(lfp);
    }

    Hopefully this code should explain itself, I'm trying to just save a Container structure. For some reason, this refuses to work, maybe Container is not a good struct name to use? =/
    Thanks for any help.

    -Drek

  2. #2
    Registered User
    Join Date
    Feb 2002
    Posts
    1
    I see quite a few things wrong with that code. Here is an example that might help you.

    #include <stdio.h>

    struct zigzag {
    int a;
    char b[20];
    };

    int writeBinary(const struct zigzag);
    int readBinary(struct zigzag *);

    int main() {
    struct zigzag myZig, inZig;
    struct zigzag *ptr;

    /* the memory address we will send to readbinary */
    ptr = &inZig;

    /* assign some dummy values */
    myZig.a = 24;
    strcpy(myZig.b, "Blubber");

    /* Write the struct myZig and then read it back in */
    if(writeBinary(myZig))
    exit(1);
    if(readBinary(ptr))
    exit(1);

    /* proof that it was successful */
    printf("inZig.a: %d\n", inZig.a);
    printf("inZig.b: %s\n", inZig.b);
    }


    int writeBinary(const struct zigzag j) {
    FILE *outFile;

    /* open the file we are writing to */
    if(!(outFile = fopen("binout", "w")))
    return 1;

    /* use fwrite to write binary data to the file */
    fwrite(&j,sizeof(struct zigzag),1,outFile);

    fclose(outFile);

    return 0;
    }

    int readBinary(struct zigzag *b) {
    FILE *inFile;

    if(!(inFile = fopen("binout", "r")))
    return 1;

    fread((struct zigzag *)b,sizeof(struct zigzag),1,inFile);

    fclose(inFile);

    return 0;
    }

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Fread is overwriting other variables in my program
    By shortchar in forum C Programming
    Replies: 3
    Last Post: 07-13-2007, 06:25 PM
  2. How to load pixels of BMP into an array
    By brconner in forum Windows Programming
    Replies: 10
    Last Post: 06-02-2007, 04:30 AM
  3. Why is fread sometimes taking so long?
    By manugarciac in forum C++ Programming
    Replies: 2
    Last Post: 04-28-2007, 11:25 PM
  4. return value of fread()
    By m.mixon in forum C Programming
    Replies: 5
    Last Post: 07-24-2006, 06:31 PM
  5. Reasons as to why fread would fail
    By Happy_Reaper in forum C Programming
    Replies: 4
    Last Post: 04-08-2006, 11:41 AM

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