1

こんにちは、Microsoft Visual Studio Ultimate 2010で以下のコードによって生成された.exeファイルを実行しようとしていますが、ファイルが作成されていません。

LinuxでGCCを使用してコンパイルおよび実行すると、このコードは完全に正常に機能します。

繰り返しになりますが、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;
    }
4

2 に答える 2

3

ENTERおそらく、ファイル名を入力した後に を押します。\nも入りますcNotes_buffer。ここで、このバッファーをファイル名として使用してファイルを作成しようとします。そして、その中にファイル名を作成できるとは思いません\n

リターンキーを押した場合のようにします

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

編集: Linuxではファイル名に改行を含めることができますが、 Windowsではそうではありません。

于 2012-04-18T11:19:26.243 に答える
0

してみてくださいfclose(pFile)。ファイルを閉じないと、奇妙な動作が発生します。

于 2012-04-18T11:15:35.707 に答える