假设用这个函数原型编写了一个二进制文件(需要打开读取):
void writeBinaryFile ( char *fileName , char *comment , int numberOfDoubles , double *doubles , int numberOfInts , int *ints )
(有关此功能的更多详细信息可以在下面的粘贴中找到)
...
我编写的代码只获取 .bin 文件的第一个字母...
这是我的功能:
void readBinaryFile(char *fileName)
{
        FILE *fp;
        char *ptr;
        double *ptr1;
        int *ptr2;
        ptr=(char*)malloc(sizeof(char)*5);
        ptr1=(double*)malloc(sizeof(double)*6);
        ptr2=(int*)malloc(sizeof(int)*6);
        fp=fopen ( fileName , "rb" ) ;
        fread(ptr,sizeof(char),11,fp);
        while(*ptr!='\0')
        {
            printf("%c",*ptr);
            ptr++;
        }
        fclose(fp);
}
我在这里缺少什么?我需要阅读的不仅仅是.bin 文件中的第一个字符。
一如既往地感谢帮助。谢谢!
如果有人需要有组织的完整代码,这里是粘贴:
void readBinaryFile(char *fileName)
{
    FILE *fp;
    char *ptr;
    double *ptr1;
    int *ptr2;
    ptr=(char*)malloc(sizeof(char)*5);
    ptr1=(double*)malloc(sizeof(double)*6);
    ptr2=(int*)malloc(sizeof(int)*6);
不要malloc在 C 中转换返回值。它隐藏了错误。
    fp=fopen ( fileName , "rb" ) ;
您需要在这里检查错误。
    fread(ptr,sizeof(char),11,fp);
您为 分配了 5 个字节ptr,现在您正在阅读 11。您还应该检查 的返回值fread。
    while(*ptr!='\0')
    {
        printf("%c",*ptr);
        ptr++;
    }
没有什么可以阻止这个循环在分配空间的末尾运行。
    fclose(fp);
}
现在,您分配的所有内存都泄漏了,并且您读入的所有数据都丢失了,因为指针在您返回时超出了范围。