2

我正在尝试读取文本文件并将内容显示到屏幕上。该文件只是一个单词列表。我已将 .txt 文件放在我的项目树中,但代码不会打开它。我的问题是,.txt 文件放错地方了吗?fopen 是执行此操作的正确功能吗?我正在绕圈子,它看起来很简单!:(

文件存放在“ProjectName”下的目录--Source Files--File.txt

到目前为止,我的代码是:

int main (void)
{

char word [30];

    FILE *fp;

    if ((fp = fopen("sort.txt", "r")) == NULL)
    {
        printf( "File could not be opened\n");
    }
    else
    {
        fscanf(fp, "%s", word);

        while (!feof(fp))
        {
            fscanf(fp, "%s", word);
        }

        fclose (fp);
    }
    return 0;
}

问题解决了。我通过右键单击 Source Files 然后选择 Add New Item 并在 Utility 选项下选择文本文件,在我的项目中重新创建了一个文本文件。然后我将原始文本文件数据复制到其中。然后在适当的目录中创建该文件。简单的解决方案!快乐的新手编码器!

4

2 回答 2

0

由于您打开的是相对路径,因此您需要将 File.txt 与 .exe 放在同一文件夹中。当然,我假设当您编写 File.txt 时,您的意思是 sort.txt,因为这就是您的代码所引用的内容。

对于托管语言,您可以对任何文件使用“始终复制”,但对于 C++,您不能。因此,要将特定文件复制到输出目录,您需要添加一个构建后事件:

  • 右键单击 C++ 项目并选择属性
  • 展开“配置属性”
  • 展开“构建事件”
  • 单击“构建后事件”
  • 粘贴copy "$(ProjectDir)sort.txt" "$(OutputPath)"到“命令行”框中
  • 点击“确定”

现在,当您构建时,应该将 sort.txt 复制到与可执行文件相同的位置。请注意,尽管 sort.txt 看起来像是在“源文件”文件夹中,但实际上并非如此(至少在默认情况下)。

于 2013-02-15T18:19:26.103 回答
0

您的代码将被编译到解决方案中的 bin 文件夹中。打开的文件在 bin 文件夹中与 .exe 相同的位置查找文件。如果单击解决方案文件夹中的文件,右键单击并选择属性,然后将选项“复制到输出目录”设置为“始终复制”,VS 会将该文件复制到与 exe 相同的位置。

于 2013-02-15T18:19:51.460 回答