c - 错误消息说调试断言失败
问题描述
我一直在尝试创建一个保存函数来保存一个具有不同文件名的新文件,我收到一条抱怨 fread 的错误消息,我猜它是因为它没有找到 fopen,但它是写的,我仍然得到一个错误消息,所以如果有人能帮助在代码中显示什么是错误的,我将不胜感激。
代码链接:
表达式:流!= nullptr 行:48
我不确定为什么当我想保存新文件时错误出现在选择菜单中,但当用户选择任何其他菜单选项时却没有出现。
例子:
输入:
解决方案
刷新(标准输入);之后可能不起作用,printf("\nEnter the New File Name:");
因此scanf("%[^\n]", name);
在输入中有一个 '\n' 并且什么都不做,并且name没有设置并且是空的,之后
fp = fopen(name, "wb");
fp1 = fopen(fname, "rb");
因为名称无效,所以 fopen 不起作用,所以在fp和fp1为空之后,这会产生断言失败。
不要使用fflush,并且在你fopen检查之后你没有得到一个空指针。
只需更换
fflush(stdin);
scanf("%[^\n]", name);
经过
scanf("%s", name);
一切都会好的
推荐阅读
- selenium - PageSource() 获取的代码与 appium 检查器代码不同
- python - 如何使用python有效地查找具有一定间隔的两个地理位置/位置之间的所有坐标
- python - 如何在熊猫数据框子集操作中将 end_time 指定为当前时间
- java - 请求范围的 Spring AOP 建议被调用两次
- php - 如何使用 ACF 复选框值进行 meta_query,因为它们将自己存储为数组?
- angular - 愚蠢的 UI 组件:如何在输出发出后应用条件行为
- angularjs - 如果数组中的对象缺少字段,如何隐藏元素
- python - 排序后如何获取数据帧的索引
- sql - 我想将数字更改为小时:分钟
- ajax - 字段中的值不会通过 ajax 传递给 php