How does fread know when the file is over in C?

前端 未结 2 1843
挽巷
挽巷 2021-01-02 03:38

So I\'m not entirely sure how to use fread. I have a binary file in little-endian that I need to convert to big-endian, and I don\'t know how to read the file. Here is what

相关标签:
2条回答
  • 2021-01-02 04:15
    FILE* file = fopen(filename, "rb");
    char buffer[4];
    
    if (!file) {
    /* File was opened successfully. */
    
    /* Attempt to read */
    while (fread(buffer, 1, 4, file) != EOF) {
        /* byte swap here */
    }
    
    fclose(file);
    }
    
    0 讨论(0)
  • 2021-01-02 04:30

    That's not how you properly read from a file in C.

    fread returns a size_t representing the number of elements read successfully.

    FILE* file = fopen(filename, "rb");
    char buffer[4];
    
    if (file) {
        /* File was opened successfully. */
    
        /* Attempt to read */
        while (fread(buffer, 1, 4, file) == 4) {
            /* byte swap here */
        }
    
        fclose(file);
    }
    

    As you can see, the above code would stop reading as soon as fread extracts anything other than 4 elements.

    0 讨论(0)
提交回复
热议问题