如何使.txt文件对Visual C可见

时间:2014-09-14 17:46:54

标签: c visual-studio-2013 scanf assertion

我正在编写一个程序,需要从文本文件(记事本)中读取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); 
}

如果问题出在文本文件的存储位置,那么 - 确切地说 - 我把它放在哪里? 提前致谢。

2 个答案:

答案 0 :(得分:1)

  

我看过类似的问题,解决方案通常是将文本文件移动到当前工作目录,但我不确定这意味着什么。

程序的工作目录基本上允许它通过相对路径打开文件。通常,程序的工作目录将位于可执行文件所在的位置(因此它可以轻松引用同一目录中的文件);但是,在Visual Studio中进行调试时,默认情况下它会将项目目录用作工作目录。您可以在&#34;调试&#34;下进行更改。项目设置的页面,或者您可以将binns.txt放在项目目录中。

答案 1 :(得分:0)

资源目录是错误的地方。在程序中添加系统(&#34; dir&#34;),它会显示程序的运行位置。把你的档案放在那里,你应该好好去。