【发布时间】:2016-08-23 20:46:15
【问题描述】:
在准确显示代码之前,让我详细解释一下问题。 我需要创建 2 个 dat 文件,其中包含一些关于酒店的数据。其中一个文件包含以下信息:酒店所在省份的名称(16 字符串)、酒店类别(int)、酒店代码(int)、酒店名称(30 字符串)、金额房间数 (int) 和当前预订房间数 (int)。第二个 dat 文件包含从列表中删除的酒店的代码。测试的最后一部分是创建一个文件,其中包含其余酒店的所有信息。因为,理论上,如果 2 个第一个 dat 文件,我已经有了信息,所以我只写了一些简单的东西。值得一提的是,我必须使用 dev c++ 4.9.9.2:
#include <iostream>
#include <cmath>
#include <fstream>
#include <string.h>
#include <cstdio>
using namespace std;
struct rhot
{
char provincia[16];
int categoria;
int chot;
char nombrehotel[30];
int canthabitaciones;
int habitreservadas;
};
int main()
{
rhot hot1 =
{
"Còrdoba",
4,
1,
"La pachamama",
100,
49
};
rhot hot2 =
{
"Salta",
3,
2,
"Puntoblanco",
60,
13
};
rhot hot3 =
{
"Catamarca",
4,
3,
"Jaguar Resort",
250,
197
};
rhot hot4 =
{
"Chubut",
6,
4,
"Llao Llao",
300,
299
};
rhot hot5 =
{
"La pampa",
2,
5,
"Gaunchito",
40,
20
};
rhot hot6 =
{
"Mendoza",
3,
6,
"Queseyo",
60,
13
};
FILE* f1;
f1 = fopen("Arhot.dat", "w");
fwrite(&hot1,sizeof(hot1),1,f1);
fwrite(&hot2,sizeof(hot2),1,f1);
fwrite(&hot3,sizeof(hot3),1,f1);
fwrite(&hot4,sizeof(hot4),1,f1);
fwrite(&hot5,sizeof(hot5),1,f1);
fwrite(&hot6,sizeof(hot6),1,f1);
fclose(f1);
system("PAUSE");
return EXIT_SUCCESS;
}
第二个:
#include <iostream>
#include <cmath>
#include <fstream>
#include <string.h>
#include <cstdio>
using namespace std;
struct Rbaja
{
int Cbajas;
};
int main()
{
Rbaja Baja1 =
{
1
};
Rbaja Baja2 =
{
5
};
FILE* f1;
f1 = fopen("Arbaj.dat", "w");
fwrite(&Baja1,sizeof(Baja1),1,f1);
fwrite(&Baja2,sizeof(Baja2),1,f1);
fclose(f1);
system("PAUSE");
return EXIT_SUCCESS;
}
(我还想提一下,我不知道我真正需要哪些库,我尝试删除它们中的每一个并运行程序,即使它没有库也没有给我任何错误,所以只是因为我不知道该怎么办,我把它们都放在那里了)
现在我正在努力完成这项工作。我需要阅读上面创建的 2 个文件,并尝试根据我一开始所说的创建一个。但是我几乎没有写一个 fread 函数,每当我编译和运行它时它就会崩溃
#include <iostream>
#include <cmath>
#include <fstream>
#include <string.h>
#include <cstdio>
#include <cstdlib>
using namespace std;
FILE* fileArhot;
FILE* fileArbaj;
FILE* fileAract;
struct rhot
{
char provincia[16];
int catergoria;
int chot;
char nombrehotel[30];
int cantahibaticones;
int habitreservadas;
};
struct rbaja
{
int Cbajas;
};
struct rhotact
{
char provincia[16];
int catergoria;
int chot;
char nombrehotel[30];
int cantahibaticones;
int habitreservadas;
};
int main()
{
fileArhot =fopen("Arhot.dat","r");
fileArbaj =fopen("Arbaj.dat","r");
fileAract =fopen("Aract.dat","w");
fread(&fileArhot,sizeof(rhot),1,fileArhot);
fread(&fileArbaj,sizeof(rbaja),1,fileArbaj);
fclose(fileArhot);
fclose(fileArbaj);
fclose(fileAract);
system("PAUSE");
return EXIT_SUCCESS;
}
每当我尝试运行它时,程序就会崩溃。我认为它是因为它在做一个无限循环之类的,但我不知道。我包含了 2 个 dat 文件的创建代码,因为我可能创建错了。
无论如何,我需要一些帮助:D (如果文本是西班牙语,我也很抱歉,我来自阿根廷,我需要用西班牙语做代码。)
【问题讨论】:
-
1.你为什么不发布输入文件的文本,而不是你用来创建它们的代码? 2. 您是否尝试过使用调试器来单步调试代码并查看它在哪一行崩溃?
-
调试器是解决此类问题的正确工具。 在询问 Stack Overflow 之前,您应该逐行浏览您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题,以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。