2010-11-19 9 views
2

可能性の重複:
What is the difference between _tmain() and main() in C++?問題メインアプリにするchar * ARGV []を渡す

OKは、私がここでの問題が何であるかの手がかりを持っていません。 私はC++でargvを使っていくつかのファイル名を読み込もうとしていますが、何らかの理由でファイル名の最初の文字だけが渡されます。 コードの一部を紹介します。

int _tmain(int argc, char * argv[]) 
{ 
    int i; 
    char *s1 = argv[1]; 
    printf("%s\n", s1); 

    for(i=1; i<argc; i++) 
    printf("%s\n", argv[i]); 
    return 0; 
} 

//The argv[1] I am passing is a file name like "TestFile.txt" 
//The print out that I am getting is: 
//T 
//T 

ここで問題は何ですか?どんな助けでも非常に感謝しています。おかげさまで

+1

なぜこのタグは 'C++'ですか?それは 'c'でなければなりません。 – sbi

+1

@sbi: "C++でargv **を使用していくつかのファイル名を読み込もうとしています**" C++にタグ付けする必要があります。または、 'printf' ;-)を使用するコードでC++タグを参照することができない場合は、言語を使用しないでください。 –

+0

'int _tmain(int argc、TCHAR * argv [])' – jwueller

答えて

1

あなたの環境はワイド文字セットを使用していると思います。したがって、wprintfまたはwcoutが動作するかどうか試してみてください。

+0

'wprintf'を' char * 'で置き換えますか? –

+0

@Let_Me_Be:正確に。 '_tmain'で' char * 'を使うのは質問者のエラーです。私はコンパイラが不平を言うことは少し驚いています。 –

0

あなたのプログラムは完全に正常に動作し、ここに出力があります。あなたは書式指定子として%sまたは%cを使用している場合

$ ./a.out textfile.txt 
textfile.txt 
textfile.txt 

あなたがチェックしていただけますか?

+0

Linuxでコンパイルしましたか? _tmainはMicrosoftの拡張版なので、OPはWindowsシステムでほぼ確実にコンパイルされます。 – Simone

0

C配列のインデックスは0から始まりそうS1のあなたの初期化は次のようになります。

char* s1 = argv[0]; 
0

をあなたが_tmainをしたい場合、あなたはTCHAR * ARGVを作成する必要があります。

関連する問題