用c语言从文件中读取所有字节

用c语言从文件中读取所有字节,c,windows,file,stat,C,Windows,File,Stat,我试图从文件中读取字节,但大小已损坏。调试时,我可以看到st.st\u size的值,但无法读取size的值 int main(void) { FILE* oud; struct stat st; _off_t size; unsigned* bytes; char const path[] = "C:\\Users\\Ruben\\Documents\\test.txt"; errno_t error; if ((error = fo

我试图从文件中读取字节,但大小已损坏。调试时,我可以看到
st.st\u size
的值,但无法读取
size
的值

int main(void)
{
    FILE* oud;
    struct stat st;
    _off_t size;
    unsigned* bytes;
    char const path[] = "C:\\Users\\Ruben\\Documents\\test.txt";
    errno_t error;

    if ((error  = fopen_s(&oud, path, "rb" )) != NULL)
        return -1;

    stat(path, &st);
    size = st.st_size;
    bytes = (unsigned*)malloc(size);
    fread(bytes, 1, size, oud);
    fclose(oud);

    getchar();
    return 0;
}

我建议使用循环并逐字节迭代文件字节,检查EOF char。一旦找到它,您现在就知道了文件的实际大小,并且可以从一开始就正确地读取它,将其放入缓冲区或其他地方。

我建议使用循环并逐字节迭代文件,检查EOF字符。一旦找到它,您现在就知道了文件的实际大小,并且可以从一开始就正确地读取它,将其放入缓冲区或其他地方。

您是否有机会调试发布模式的可执行文件?你能
printf
大小,看看你得到了什么吗?因为你有文件本身,操作系统说文件有多大(通过Windows资源管理器或Cmd提示符“dir”)。
stat
说它有多大?你能读多少字节?这些数字中的任何一个相互匹配并且有意义吗?
bytes
不应该是
unsigned char*
?您是否有可能调试一个发布模式的可执行文件?你能
printf
大小,看看你得到了什么吗?因为你有文件本身,操作系统说文件有多大(通过Windows资源管理器或Cmd提示符“dir”)。
stat
说它有多大?你能读多少字节?这些数字中有任何一个相互匹配并且有意义吗?
bytes
不应该是
unsigned char*