通过fopen创建文件在Linux上运行良好但在Windows上运行不正常(MS VS 2010)

时间:2012-04-18 11:06:01

标签: c windows linux visual-studio-2010 gcc

您好,我正在尝试执行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;
    }

2 个答案:

答案 0 :(得分:3)

输入文件名后,您很可能会按 ENTER 。因此\n也会进入cNotes_buffer。现在,您尝试使用此缓冲区创建文件作为文件名。我认为你不能用\n创建文件名。

如果您按下了返回键,请执行某些操作

cNotes_buffer[strlen(cNotes_buffer)-1]=0;

编辑:新行可以出现在filenames的linux中,但不是Windows这就解释了为什么你的文件是在Linux中创建的,而不是在Windows上创建的。

答案 1 :(得分:0)

尝试fclose(pFile)。未能关闭文件会导致奇怪的行为。