求解这个c++程序为什么不能输出完整的参数。。。

int _tmain(int argc, _TCHAR* argv[])
{
if(argc > 1)
{
printf("Command%d\n",(argc - 1));
for (int i=1;i<argc;i++)
{
printf("%s\n",(char*)argv[i]);
}
}
else
{
printf("No command\n");
}

system("pause");
return 0;
}

在命令提示符里这样:
C:\Users\test\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Debug>Co
nsoleApplication1.exe qwerty
Command1
q
请按任意键继续. . .

只输出了参数的第一个字符。。。。求解为何。。。。

nsoleApplication1.exe qwerty

这个算是有两个参数,一个是Exe本身,一个是 qwerty
for (int i=1;i<argc;i++)
你从第2个开始输出,所以就一个.追问

其实我是想输出qwerty。。。而实际上只输出了q这一个字符。。。。这个程序我在vc6.0上是可以输出qwerty的。。。。我猜问题出在指针类型上。。。。

追答

你的意思是同样的程序,VC6输出 qwerty, 但是VS2012输出 q ?
这个太奇怪了,你使用了 _TCHAR* 到 char* 的强制转换,难道你编译的是Unicode版本?否则是不需要转换的,直接可以输出。

追问

好吧我又看了下,vc6.0是这样的int main(int argc, char* argv[]),指针类型都不同。。。。结果要怎么解决啊。。。

追答

工程属性-配置属性,右边“字符集”,不要使用 Unicode
我的是VS2008,跟你可能不完全一样,你找一下吧。

追问

好吧果然是这样,感谢~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-27
argv[i]是字符,不是字符串。追问

不是指向字符变量的指针么。。。

第2个回答  2014-09-27
Unicode编码,试试用wprintf()输出追问

这个真不是这个问题。。。

追答

你没试过怎么知道不对?

追问

试过了啊,结果什么都没输出了

追答

是编码问题  不要挣扎了

#include "stdafx.h"


int main(int argc, char *argv[])
{
 if (argc > 1)
 {

  printf("Command%d\n", (argc - 1));
  for (int i = 1; i<argc; i++)
  {
   printf("%s\n", argv[i]);
  }
 }
 else
 {
  printf("No command\n");
 }
 system("pause");
 return 0;
}

#include "stdafx.h"

/*_tmain是UNICODE编码的main函数
int _tmain(int argc, wchar_t *argv[])
{
 if (argc > 1)
 {

  printf("Command%d\n", (argc - 1));
  for (int i = 1; i<argc; i++)
  {
   wprintf(L"%s\n", argv[i]);
  }
 }
 else
 {
  printf("No command\n");
 }
 system("pause");
 return 0;
}

/*初学者建议不用vs  建议用vc++,网上有兼容win7和win8的版本*/

追问

好吧。。。感谢~还是用vc++6.0去。。。

相似回答