【发布时间】:2012-04-18 11:06:01
【问题描述】:
您好,我正在尝试在 Microsoft Visual Studio Ultimate 2010 中执行由以下代码生成的 .exe 文件,但没有看到正在创建的文件。
这段代码在使用 GCC 的 Linux 中编译和执行时运行良好。
重复一遍,我可以使用在 Linux 中创建的文件!但在 Windows 中,.exe 程序无法为用户在命令提示符下输入的名称创建文件。
有人可以让我知道我在编译器方面出了什么问题吗?
衷心感谢
// filename.cpp : Defines the entry point for the console application.
#include "stdafx.h" //Please comment if code is to be executed in GCC
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int main()
{
FILE *pFile;
char cNotes_buffer[100];
memset(cNotes_buffer,0,100);
printf("Please enter name of the LOG file - with tag MAX 100 characters!! \n");
if( fgets (cNotes_buffer , 100 , stdin) != NULL )
{
fclose (stdin);
}
printf("name of file %s \n", cNotes_buffer);
if ( ( pFile = fopen(cNotes_buffer,"a+") ) == NULL )
{
printf("ERROR OPENING FILE FOR LOGGING \n");
exit(0);
}
return 0;
}
【问题讨论】:
-
尝试
perror()(而不是printf())获取错误消息。通过perror(),您还可以获得有关错误的更多信息。 -
@pmg AFAIK 窗口没有
perror()。这是GetLastError()。 -
@RedX:除非使用的 Windows 编译器不符合 ANSI C89 / ISO C90,否则 Windows 有
perror()。 -
因为他使用的是visual studio,所以他可以使用perror(),但值得注意的是GetLastError有时可以提供更多细节
-
@pmg Visual Studio 编译器不是 C 编译器。它是一个具有 C 特性的 C++ 编译器。但很高兴知道它有
perror()。 [MSDN]!(msdn.microsoft.com/de-de/library/yeby3zcb%28v=vs.100%29.aspx) 表示perror()就够了
标签: c windows linux visual-studio-2010 gcc