0

何も入力できないのはなぜですか?実行中のプログラムは私の入力を待たず、cmdが出力Enter a Filenameして閉じます。VisualStudio2008で実行しています。

int main(int argc, char* argv[])
    {
        if(argc<2)
            printf("\nEnter a filename");
        else
        { 
            //code
        }
        getch();
        return 0;
        }

私は何が間違っているのですか?

4

3 に答える 3

2

何かがバッファに入っていると思います。どんなものか見てみる?

int main(int argc, char* argv[])
{
    if(argc<2)
        printf("\nEnter a filename");
    else
    { 
        //code
    }

    while (true)
    {
        int c;
        c = getch();
        printf( ": %d\n", c );
    }
    return 0;
 }

応答後、プログラムが呼び出されると、入力ストリームに文字 b が表示されます。それを説明する方法がわからない。文字だけでなく、文字列全体を取得しようとしていますか?

int main(int argc, char* argv[])
{
    char string [256];
    if(argc<2)
    {
        printf("Enter a filename:");
        gets (string);
    }
    else
    { 
        //assign string to argv[1]
    }


   printf ("Your filename is: %s\n",string);
   return 0;
  }
于 2011-11-05T17:19:35.860 に答える
0

通常は、出力された文字列を開始するのではなく、改行で終了する必要があります(stdout改行では、バッファがフラッシュされる可能性があるため)。または、に電話fflush(stdout);する前に電話する必要がありますgetch()。だから試してみてくださいprintf("Enter a filename:\n");

于 2011-11-05T16:18:13.470 に答える
0

Ctrl+F5( Visual Studio で)デバッグせずにプログラムを実行してみてください。これにより、プログラムの終了後も cmd ウィンドウが開いたままになります。

(編集)おそらく、次のようなことをしたいでしょう:

int main(int argc, char* argv[])
    {
        string filename;
        if(argc<2)
        {
            printf("\nEnter a filename");
            cin >> filename;
        }
        else
        { 
            //code
        }
        // getch(); // Use Ctrl+F5 instead
        return 0;
    }

getch()入力ストリームから 1 文字のみを取得します。

于 2011-11-05T16:58:20.510 に答える