一个弱弱的问题..
#include <stdio.h>
int main(int argc,int *argv[])
{
printf("%d\n",*argv[1]);
printf("%d\n",*argv[2]);
printf("%d\n",*argv[3]);
return 0;
}
我在CMD下输入:a 1 4 6
怎么好像输出的是地址啊?该怎么办?
[解决办法]
你输出的是字符a,1,4的10进制
比如a = 0x61 = 97(D)
如果想输出参数
改为
- C/C++ code
#include <stdio.h> int main(int argc,int *argv[]) { printf("%s\n", argv[1]); printf("%s\n", argv[2]); printf("%s\n", argv[3]); return 0; }
[解决办法]
int main(int argc,char *argv[])
{
printf("%c\n",*argv[1]);
printf("%c\n",*argv[2]);
printf("%c\n",*argv[3]);
return 0;
}
[解决办法]
- C/C++ code
#include <stdio.h> int main(int argc,char *argv[]) { for (int i=0;i<argc;i++) { printf("%s\n", argv[i]); }return 0; }
[解决办法]
应该是做了类型转换,系统传入的是char*,在main转成int*,但实际上还是char*
printf("%c\n", *((char*)argv[1]));
[解决办法]
#include <stdio.h>
void main(int argc,int *argv[])
{
printf("%s\n",argv[1]);
printf("%s\n",argv[2]);
printf("%s\n",argv[3]);
}
[解决办法]
那还不简单,把字符变成整数就是了,"%d"打印字符不行,但打印整数从来不出错的。
如果是单个的整数字符,减去字符'0'就可以变成相应的整数值,而如果是数字字符串,可以考虑使用sscanf或atoi等函数把它们转换成整数,然后再用"%d"控制输出。