我正在编写一个程序,需要从文本文件(记事本)中读取32位二进制数字作为字符串。文件内容如下所示:
11111111111111110111100011111110
11111111111111111111111111110101
00000000100001011010101011110101
00000000000000000000000010010001
每次我尝试运行代码时,都会收到错误消息,指出调试断言失败,因为(stream!= NULL)条件不满足。我假设这来自代码的fscanf部分的错误。我已经看过类似的问题,解决方案通常是将文本文件移动到当前工作目录,但我不确定这意味着什么。我正在使用visual studio Express 2013,并将文本文件保存在我的控制台应用程序中的资源文件下。我还将控制台应用程序和文本文件保存在桌面上的单个文件夹中。这些似乎都没有对解决错误产生任何影响。如果它有帮助,这是我的源代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
void main()
{
char str[34];
FILE *binnz;
binnz = fopen("binns.txt", "r");
while (fscanf(binnz,"%s",str) != EOF)
{
printf("%s\n", str);
}
fclose(binnz);
}
如果问题出在文本文件的存储位置,那么 - 确切地说 - 我把它放在哪里? 提前致谢。
答案 0 :(得分:1)
我看过类似的问题,解决方案通常是将文本文件移动到当前工作目录,但我不确定这意味着什么。
程序的工作目录基本上允许它通过相对路径打开文件。通常,程序的工作目录将位于可执行文件所在的位置(因此它可以轻松引用同一目录中的文件);但是,在Visual Studio中进行调试时,默认情况下它会将项目目录用作工作目录。您可以在&#34;调试&#34;下进行更改。项目设置的页面,或者您可以将binns.txt
放在项目目录中。
答案 1 :(得分:0)
资源目录是错误的地方。在程序中添加系统(&#34; dir&#34;),它会显示程序的运行位置。把你的档案放在那里,你应该好好去。