可能的重复:
C++ 中 _tmain() 和 main() 有什么区别?
我有一个控制台应用程序,它采用一个命令行参数。
int _tmain(int argc, char* argv[])
{
...
printf("Path: %s\n", argv[1]);
...
}
当我使用参数运行程序时(myprogram.exe D:\myfolder\myfile
),它打印Path: D
代替Path: D:\myfolder\myfile
.
我应该如何更改提取第一个命令行参数的过程(argv[1]
)以便它返回完整路径,而不仅仅是第一个字母?
我尝试将路径放在引号中(myprogram.exe "D:\myfolder\myfile"
),但没有帮助。
Use _tprintf
代替printf
。你的程序几乎肯定被设置为编译为UNICODE
因此,每个“字符”占用两个字节。
你打电话printf
它对单字节字符进行操作。第二个字节恰好是0,所以printf
认为它到达了字符串的末尾,因为零字节被认为是字符串的终止。
并确保您的argv
被声明为TCHAR
并不是char
。保持一致:要么使用TCHAR
惯例,或者不。但不要混合,除非你有very有充分的理由(即您知道自己在做什么并且正准备施展魔法)。很可能你不这样做,也不应该这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)