2012-01-27 74 views
1

我在“Windows 7 32bit”上使用“Visual Studio 2010”,并且正在进行“调试”构建。C - fopen有时可以工作,有时它不会

在我的节目我用的fopen使用此代码访问文件:

FILE *f = fopen("simple_test.asm", "r"); 

当我运行(F5),它返回一个空指针。 当我使用完整路径时效果很好。

奇怪的是,当我通过cmd打开文件时,即使不使用完整路径,它也可以像魅力一样工作!

有人可以请说一说吗? 谢谢!

+2

听起来像工作目录的问题。在'cmd'外壳中,您可能与visual studio用于运行程序的目录不同。您应该能够在“项目设置”中设置工作目录:http://msdn.microsoft.com/en-us/library/kcw4dzyf.aspx – millimoose 2012-01-28 00:00:32

+0

调试器可能会使用不同的当前目录启动它。如果您将完全合格的路径传递给fopen,它会起作用吗? – 2012-01-28 00:01:00

+0

@ruakh我不喜欢猜测(太多)的答案,我只是重新发布,如果猜测结果是正确的。 – millimoose 2012-01-28 00:02:58

回答

1

Visual Studio 2010的当前目录可能不是具有simple_test.asm的目录。

就这么简单。

+0

谢谢你的工作! 显然工作目录设置为* .vcxproj 和源文件,而不是带有调试文件的目录 – Danish 2012-01-28 00:09:33

1

fopen接受指定模式的第二个参数,“r”读取“r +”读取和写入等等。

FILE *fopen(const char *path, const char *mode); 
+0

谢谢,忘了补充说我的问题(生病编辑) – Danish 2012-01-28 00:03:00

相关问题