argv [1]只包含Visual C++ 2010中第一个命令行参数的第一个字母

DP_*_*DP_ 2 c c++ visual-studio-2010 visual-c++

可能重复:
C++中_tmain()和main()有什么区别?

我有一个控制台应用程序,它需要一个命令行参数.

int _tmain(int argc, char* argv[])
{
    ...
    printf("Path: %s\n", argv[1]);
        ...
}
Run Code Online (Sandbox Code Playgroud)

当我使用参数(myprogram.exe D:\myfolder\myfile)运行程序时,它打印Path: D而不是Path: D:\myfolder\myfile.

我应该如何更改提取第一个命令行参数(argv[1])的过程,以便它返回完整路径,而不仅仅是第一个字母?

我试图将路径放在quotes(myprogram.exe "D:\myfolder\myfile")中,但它没有帮助.

Nik*_*lis 6

_tprintf而不是printf.您的程序几乎肯定会被编译为UNICODE,因此,每个"字符"占用两个字节.

您调用printf哪个操作单字节字符.第二个字节恰好是0,因此printf认为它到达了字符串的末尾,因为零字节被认为是字符串的终止.

并确保你argv的声明TCHAR与否char.保持一致:要么使用TCHAR例程,要么不使用.但是,不要混用,除非你有一个非常好的理由(即你知道你在做什么,你都在摩拳擦掌做一些魔法).你可能没有,你不应该.