【发布时间】:2013-02-08 02:56:42
【问题描述】:
我的程序的主要功能显示一个开关菜单。当输入选项 1 时,会调用一个函数来“洗牌”一组“卡片”。改组完成后,该函数通过调用 main() 将程序返回到开头,从而再次显示菜单。
我遇到的问题是菜单的选项 4 将洗牌后的数组写入文件。但是当洗牌后重新启动程序时,数组数据丢失,因此输出的文件都是垃圾文件。有没有办法在不丢失数据的情况下重新启动 main()?
我在上课,我可以使用的工具有限,所以只能接受最基本的代码。基本上,我正在寻找类似 goto 但更安全一些的东西(顺便说一下,goto 在这个类中也是被禁止的)。
【问题讨论】:
-
在 C++ 中调用
main是非法的。哪个编译器允许这样做? -
“我正在寻找类似 goto 但更安全一点的东西”这听起来很像循环语句的描述(
while、do、for)...跨度> -
@chris,调用 main 并不违法。你可以在 gcc 中做到这一点。它很可能与您可能想要的效果不同......但没关系。试试这个代码: int main(); int a() { 返回 main(); } int main() { 返回一个(); }
-
请注意,虽然标准不允许这样做,但我所知道的每个编译器似乎都可以:stackoverflow.com/questions/2128321/…
-
@thang,我想这是因为我总是有迂腐警告作为错误,无论如何我建议这样做。根据标准,这是非法的,这是决定性因素。