将char * argv []传递到主应用程序时出现问题

时间:2010-11-19 10:39:05

标签: unicode

  

可能重复:
  What is the difference between _tmain() and main() in C++?

好的,我不知道这里有什么问题。 我试图通过在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

这是什么问题?任何帮助都会非常感激。 感谢。

4 个答案:

答案 0 :(得分:1)

我的猜测是您的环境使用宽字符集。因此,如果wprintf或wcout有效,你可以试试。

答案 1 :(得分:0)

你的程序运行得很好,这是输出。

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

请问您是否使用%s%c作为格式说明符?

答案 2 :(得分:0)

C数组索引从零开始,因此s1的初始化应为:

char* s1 = argv[0];

答案 3 :(得分:0)

如果你想要一个_tmain,你需要制作一个TCHAR * argv。