【问题标题】:Help opening a file in Visual Studio 2008帮助在 Visual Studio 2008 中打开文件
【发布时间】:2011-01-07 03:03:15
【问题描述】:

我正在尝试使用 Visual Studio 2008,因为我在 XCode 中打开文件时遇到问题。我是 VS 的新手,但这些是我采取的步骤。我创建了一个新项目,选择 Win32 Console Application,空项目。我的代码是:

// C_test.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <stdlib.h>

int main(void )
{
   printf("Hello");
   FILE *filePtr;

   filePtr = fopen( "test.txt", "r" );
   if (filePtr == NULL)
   {
      fprintf(stderr, "Can't open \"test\"\n");
      exit(EXIT_FAILURE);
   }
   else
   {
      int x;

      printf("File open successful\n");
      /* read one character at a time until EOF is reached */
      while ((x = fgetc(filePtr)) != EOF)
      {
         //printf("%c", x);
         fprintf(stderr, "%x\n",x);
      }
   }
   fclose(filePtr);
   system("pause");

   return 0;
}

有些东西似乎不正确,因为我的错误列表是:

>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(9) : error C2275: 'FILE' : illegal use of this type as an expression
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(69) : see declaration of 'FILE'
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(9) : error C2065: 'filePtr' : undeclared identifier
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(11) : error C2065: 'filePtr' : undeclared identifier
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(11) : warning C4047: '=' : 'int' differs in levels of indirection from 'FILE *'
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(12) : error C2065: 'filePtr' : undeclared identifier
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(12) : warning C4047: '==' : 'int' differs in levels of indirection from 'void *'
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(23) : error C2065: 'filePtr' : undeclared identifier
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(23) : warning C4047: 'function' : 'FILE *' differs in levels of indirection from 'int'
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(23) : warning C4024: 'fgetc' : different types for formal and actual parameter 1
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(29) : error C2065: 'filePtr' : undeclared identifier
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(29) : warning C4047: 'function' : 'FILE *' differs in levels of indirection from 'int'
1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(29) : warning C4024: 'fclose' : different types for formal and actual parameter 1
1>Build log was saved at "file://c:\Documents and Settings\jon\My Documents\Visual Studio 2008\Projects\C_test\C_test\Debug\BuildLog.htm"
1>C_test - 6 error(s), 6 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

有什么想法吗?抱歉,如果这是 a>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(9) : error C2275: 'FILE' : 非法使用这种类型作为表达式 1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(69) :见“文件”的声明 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(9) : error C2065: 'filePtr' : undeclared identifier 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(11) : error C2065: 'filePtr' : undeclared identifier 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(11) : 警告 C4047: '=' : 'int' 与 'FILE * 的间接级别不同' 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(12) : error C2065: 'filePtr' : undeclared identifier 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(12) : 警告 C4047: '==' : 'int' 与 'void 的间接级别不同*' 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(23) : error C2065: 'filePtr' : undeclared identifier 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(23) : 警告 C4047: 'function' : 'FILE *' 在间接级别上与 'int 不同' 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(23) : 警告 C4024: 'fgetc' : 形式参数和实际参数 1 的不同类型 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(29) : error C2065: 'filePtr' : undeclared identifier 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(29) : 警告 C4047: 'function' : 'FILE *' 在间接级别上与 'int 不同' 1>c:\documents and settings\jon\my documents\visual studio 2008\projects\c_test\c_test\main.c(29) : 警告 C4024: 'fclose' : 形式参数和实际参数 1 的不同类型 1>构建日志保存在“file://c:\Documents and Settings\jon\My Documents\Visual Studio 2008\Projects\C_test\C_test\Debug\BuildLog.htm” 1>C_test - 6 个错误,6 个警告 ========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

有什么想法吗?谢谢!

【问题讨论】:

  • John Knoeller 注意到您的源文件名为 main.c 而不是 C_test.cpp。除了按照 John Knoeller 建议的方式解决问题之外,我建议您在源文件中编辑您的评论。

标签: c visual-studio file-io


【解决方案1】:

您只能在 C 中的任何代码之前在范围 {} 的顶部声明变量。

在 C++ 中,您可以在任何地方声明它们。因此,要么将文件名更改为 test.cpp,要么 将您的第一个 printf 移到 FILE* fileptr 声明的下方。

int main(void ) 
{ 
   FILE *filePtr; 
   printf("Hello"); 

【讨论】:

  • 好的,感谢您了解这一点。我忘记了。我单击它在 Debug 文件夹中创建的应用程序,然后我得到“文件打开成功,后跟一堆数字,如 68、65、6c,它们都在自己的行上。我的 test.txt 文件以“hello”开头。是我得到这个输出是有原因的吗?另外,如果我从 VS 中按 F5,我尝试在文件末尾附近放置一个断点以保持命令窗口打开,但是 cmd 窗口打开和关闭的速度非常快底部窗口:“程序'[2716] C_test.exe:Native'已退出,代码为0(0x0)。”(对不起,我是VS的新手