引用用户传递的参数的单个字符
refer to single character of argument passed by user
我正在尝试制作一个十六进制到字符串的转换器。我希望在 运行 处传入参数。到目前为止我有这个..
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]
指的是 运行 中的所有字符串。 (ex "HexToString.exe", "ABCDEF0123456789") 但我想做的是引用第二个参数中的所有字符,所以 `argv[1][4] = 'E',但我不我想我可以在那里放第二个括号,因为它是一个一维数组,当我测试它时它没有工作。
输出,这可能看起来很奇怪,我想成为十六进制值的 ascii 等价物。例如.. 'B' 是 11 而 ascii 11 是 ♂.
所以我想我真正想在这里做的只是 ^ 但带有这些值的字符串。我知道这不会像现在这样工作(它将一次读取两个字符,转换和输出)但是现在我只想能够一次转换单个字符。
同样双括号编译正确但执行后出错
它没有工作,因为 atol
需要一个 char
指针,试试这个
char buffer[2];
buffer[0] = argv[1][4];
buffer[1] = '[=10=]';
printf("%s = %c\n", argv[1], (int)atol(buffer));
您可以为所有角色组织一个循环
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;
}
我正在尝试制作一个十六进制到字符串的转换器。我希望在 运行 处传入参数。到目前为止我有这个..
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]
指的是 运行 中的所有字符串。 (ex "HexToString.exe", "ABCDEF0123456789") 但我想做的是引用第二个参数中的所有字符,所以 `argv[1][4] = 'E',但我不我想我可以在那里放第二个括号,因为它是一个一维数组,当我测试它时它没有工作。
输出,这可能看起来很奇怪,我想成为十六进制值的 ascii 等价物。例如.. 'B' 是 11 而 ascii 11 是 ♂.
所以我想我真正想在这里做的只是 ^ 但带有这些值的字符串。我知道这不会像现在这样工作(它将一次读取两个字符,转换和输出)但是现在我只想能够一次转换单个字符。
同样双括号编译正确但执行后出错
它没有工作,因为 atol
需要一个 char
指针,试试这个
char buffer[2];
buffer[0] = argv[1][4];
buffer[1] = '[=10=]';
printf("%s = %c\n", argv[1], (int)atol(buffer));
您可以为所有角色组织一个循环
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;
}