我正在尝试制作一个十六进制到字符串转换器.我希望参数在运行时传递.到目前为止我有这个..
int main(int argc, const char *argv[]){
int i;
for (i=0; i < strlen(argv[1]); i++) {
printf("%s = %c\n",argv[1], (int)atol(argv[i]));
}
return 0;
}
但在printf()中 – argv [i]引用该运行的所有字符串. (例如“HexToString.exe”,“ABCDEF0123456789”)但我想要做的是引用第二个参数中的所有字符,所以`argv [1] [4] =’E’,但我不认为我可以把那里的第二个支架,因为它是一维数组,当我测试它时它没有提前工作.
输出,这可能看起来很奇怪,我想成为十六进制值的ascii等价物.例子..’B’是11,ascii 11是♂.
所以我想我真正想要做的只是那个^但是带有一串这些值.我知道这不会正常工作(它会一次读取两个字符,转换和输出)但是现在虽然我只想一次转换单个字符.
还有双括号编译正确但执行后出错.
最佳答案 您可以为所有字符组织循环
int main(int argc, const char *argv[])
{ int i;
printf("%s has \n",argv[1]);
for (i=0; i < strlen(argv[1]); i++)
{
printf("%c = %d\n", argv[1][i],
(argv [1][i] >= 'A')? (argv [1][i] - 'A' + 10 ) : (argv [1][i] - '0');
}
return 0;
}