首页 > 解决方案 > 错误消息说调试断言失败

问题描述

我一直在尝试创建一个保存函数来保存一个具有不同文件名的新文件,我收到一条抱怨 fread 的错误消息,我猜它是因为它没有找到 fopen,但它是写的,我仍然得到一个错误消息,所以如果有人能帮助在代码中显示什么是错误的,我将不胜感激。

代码链接:

表达式:流!= nullptr 行:48

我不确定为什么当我想保存新文件时错误出现在选择菜单中,但当用户选择任何其他菜单选项时却没有出现。

例子:

输入:

标签: c

解决方案


刷新(标准输入);之后可能不起作用,printf("\nEnter the New File Name:");因此scanf("%[^\n]", name);在输入中有一个 '\n' 并且什么都不做,并且name没有设置并且是空的,之后

    fp = fopen(name, "wb");
    fp1 = fopen(fname, "rb");

因为名称无效,所以 fopen 不起作用,所以在fpfp1为空之后,这会产生断言失败。

不要使用fflush,并且在你fopen检查之后你没有得到一个空指针。

只需更换

fflush(stdin);
scanf("%[^\n]", name);

经过

scanf("%s", name);

一切都会好的


推荐阅读