vs命令行传参,为啥只输出第一个字符
vs命令行传参,为什么只输出第一个字符
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
你这个程序问题就是UNICODE与多字符集的问题, 你的工程应该是UNICODE的, 但是你输出的时候使用的是%s输出, 即按char字符串输出, 因为UNICODE中 一个字符使用两个字节表示, 并且对于字母, 是使用低字节表示, 高字节为0, 所以你以char字符串输出时, 输出一个字母, 就遇到0这个结束符了, 它就认为这个串结束了.
解决办法8楼已经给出.
if (argc>1) {
for (i=1; i < argc; i++)
printf("%s ",argv[i]);
}
getchar();
------解决方案--------------------
if (argc>1) {
for (int i=0; i < argc; i++)
_tprintf(_T("argv[%d]==[%s]\n",i,argv[i]);
}
------解决方案--------------------
vs2010新建的工程默认是UNICODE格式的;
你写代码的时候按照UNICODE的格式编码应该就不会出现上面的问题的。
或者你把工程设置成Use Multi-Byte Character Set,方法如下:
Project/工程 -> Properties在弹出对话框中选择Configuration Properties,
在右边的Project Defaults下有个Character Set:
你选择使用Use Multi-Byte Character Set即可
------解决方案--------------------
你这个程序问题就是UNICODE与多字符集的问题, 你的工程应该是UNICODE的, 但是你输出的时候使用的是%s输出, 即按char字符串输出, 因为UNICODE中 一个字符使用两个字节表示, 并且对于字母, 是使用低字节表示, 高字节为0, 所以你以char字符串输出时, 输出一个字母, 就遇到0这个结束符了, 它就认为这个串结束了.
解决办法8楼已经给出.