Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我要得到变量——正在使用而没有初始化错误?_C++_Runtime Error_Fwrite_Initialization - Fatal编程技术网

C++ 为什么我要得到变量——正在使用而没有初始化错误?

C++ 为什么我要得到变量——正在使用而没有初始化错误?,c++,runtime-error,fwrite,initialization,C++,Runtime Error,Fwrite,Initialization,我想用这个程序将哈希表写入文件 但我明白了 无法将参数1从“fpinfo”转换为“const void*” 编译时出错 如果我更改struct fpinfo e使用struct fpinfo*e我得到运行时错误: 正在使用变量“e”,但未初始化 我试图通过声明它为struct fpinfo*e=NULL来初始化e。这也不行 请像往常一样帮助我 WriteHTtoFile(struct fpinfo t[][B_ENTRIES],int this_tanker,tanker_record tr[]

我想用这个程序将哈希表写入文件 但我明白了

无法将参数1从“fpinfo”转换为“const void*”

编译时出错

如果我更改
struct fpinfo e使用
struct fpinfo*e
我得到运行时错误:

正在使用变量“e”,但未初始化

我试图通过声明它为
struct fpinfo*e=NULL来初始化e。这也不行

请像往常一样帮助我

WriteHTtoFile(struct fpinfo t[][B_ENTRIES],int this_tanker,tanker_record tr[][BUCKETS])
{
    //struct fpinfo *e;
    struct fpinfo e;
    int i=0, mask;
    char filename[sizeof ("file0000.txt")];
    sprintf(filename, "filee%d.txt", this_tanker);
    curr_tanker++;
    //fp = fopen(filename,"w");
    FILE *htfile=fopen(filename,"w+b");
     system("cls");
if (htfile != NULL)  
        { 
         for (int j = 0; j < BUCKETS; ++j) 
        {
            for (int k = 0; k < tr[this_tanker][j].bkt.num_of_entries; ++k)
            {
            printf("%d\t%d\t%s\n",t[j][k].chunk_offset,t[j][k].chunk_length,t[j][k].fing_print);
            (e).chunk_offset=t[j][k].chunk_offset;
            (e).chunk_length=t[j][k].chunk_length;
            strcpy((char*)((e).fing_print),(char*)t[j][k].fing_print);
            fwrite(e,sizeof(fpinfo),1,htfile);
            }
        } 
            fclose(htfile); 
         } 
        else 
        { 
            std::cout<<"File could not be opend for writing";
            printf("Error %d\t\n%s", errno,strerror(errno));
        }

    fclose(htfile);
    return 1;
}
writehtofile(struct fpinfo t[][B_ENTRIES],int this_carner,carner_record tr[][bucket])
{
//结构fpinfo*e;
结构fpe;
int i=0,掩码;
字符文件名[sizeof(“file0000.txt”);
sprintf(文件名为“filee%d.txt”,此文件名为);
curr_油轮++;
//fp=fopen(文件名,“w”);
FILE*htfile=fopen(文件名为“w+b”);
系统(“cls”);
如果(htfile!=NULL)
{ 
对于(int j=0;jstd::coutfwrite()
的第一个参数是一个
常量void*
。它传递一个
结构fpinfo

fwrite(e, sizeof(fpinfo), 1, htfile);
改为:

fwrite(&e, sizeof(fpinfo), 1, htfile);
我不确定
struct fpinfo
的成员是什么,因此这可能是不安全的(例如,如果它包含任何指针成员)。以后对
struct fpinfo
中的成员进行任何重新排序,或进行任何导致
struct fpinfo
大小增加的更改(如添加新成员)表示任何读取以前写入的
struct fpinfo
数据的尝试都将不正确

e
的声明更改为
struct fpinfo*e;
时,单位化错误是由于指针未为NULL或被分配给动态分配的
struct fpinfo


当更改为
struct fpinfo*e=NULL;
时,当试图访问
e
的任何成员时,这将导致分段错误,因为它没有指向
struct fpinfo

fwrite()
的第一个参数是
常量void*
。这将传递一个
struct fpinfo

fwrite(e, sizeof(fpinfo), 1, htfile);
改为:

fwrite(&e, sizeof(fpinfo), 1, htfile);
我不确定
struct fpinfo
的成员是什么,因此这可能是不安全的(例如,如果它包含任何指针成员)。以后对
struct fpinfo
中的成员进行任何重新排序,或进行任何导致
struct fpinfo
大小增加的更改(如添加新成员)表示任何读取以前写入的
struct fpinfo
数据的尝试都将不正确

e
的声明更改为
struct fpinfo*e;
时,单位化错误是由于指针未为NULL或被分配给动态分配的
struct fpinfo


当更改为< >结构fpFix*e= null;当试图访问<代码> E/<代码>中的任何成员时,会导致分割错误,因为它没有指向“代码>结构fpFif} /代码>。< /p>这是C++,而不是C固定标签。文件应该是什么格式?看起来您只需要删除代码“CODE”。e> e
转换成文件应该使用的任何格式。你不能只将内存内容写入文件,然后期望它以后会有意义,除非你已经以已知格式序列化了这些内容。@DavidSchwartz这是一个二进制文件,多亏了你们,我已经成功地编写和读取了它。所有二进制文件都是什么格式的?你必须这样做转换为文件应该使用的格式。(您已将代码从似乎不起作用的代码转换为似乎起作用的代码。但它仍然非常脆弱,因为它没有实现合理的文件格式——除非您没有向我们展示的代码非常罕见。您的文件是一个字节数组,必须在字节级别定义。)@ DavidSchwartz:我对C或C++没有很深的了解。我只是通过做一些有形的东西来学习它。你能给我更多你说的吗?我是说,我如何为文件格式做字节级定义?而且我的代码看起来没有组织和计划(我也这么认为)。.那么,你能给出一个没有经验的程序员(学生)能理解的更具体的解释吗像我一样?这是C++,不是C固定标签。文件应该是什么格式?看起来你只是丢失了代码,把代码< E >代码>转换成文件应该输入的任何格式。你不能只把内存的内容写入文件,除非它已经以已知的格式串行化这些内容,否则它会有意义的。DavidSchwartz这是一个二进制文件,多亏了你们,我已经成功地写和读了它。所有的二进制文件都是什么格式的?你必须转换成文件应该采用的格式。(您已将代码从似乎不起作用的代码转换为似乎起作用的代码。但它仍然非常脆弱,因为它没有实现合理的文件格式——除非您没有向我们展示的代码非常罕见。您的文件是一个字节数组,必须在字节级别定义。)@ DavidSchwartz:我对C或C++没有很深的了解。我只是通过做一些有形的东西来学习它。你能给我更多你说的吗?我是说,我如何为文件格式做字节级定义?而且我的代码看起来没有组织和计划(我也这么认为)。.那么你能给出更具体的解释吗