如何使用 argv 打印 ASCII?
How to printf ASCII using argv?
scanf("%c",&c);
printf("%c",c+1);
如果输入 'a',它会按我的意愿打印 'b',但如果我尝试这样做,它会打印一个奇怪的问号。
char p[50];
char x = argv[1];
scanf(" %[^\n]s", p);
printf("%c\n", x+p[0]);
因为我想 运行 像 ./prog 1 这样的程序,并且 1 将添加到字母的值中,因为 'a' 将变为 'b' .
但它打印出来:�.
我可以看到您添加的是字符而不是整数。你必须考虑的是,例如'1' 的值(在 ASCII 49 中)与 1 不同。此外,argv[1]
主要是指向 char 的指针,因此这应该会警告您正在从指针生成整数。因此,您必须先将 argv[1]
(在本例中为字符数组 - 字符串)转换为整数。如果有这样的说法,当然可以(访问前需要检查)。
如果你的 argv[1]
来自 main(int argc, char *argv[])
你使用的是指针而不是字符。
查看声明 char *argv[]
它说 argv
是指向 char 的指针数组。如果你想在第一个参数中获取作为字符串传递的数字,你必须使用:
char p[50];
int x = atoi(argv[1]);
scanf(" %[^\n]s", p);
printf("%c\n", x+p[0]);
scanf("%c",&c);
printf("%c",c+1);
如果输入 'a',它会按我的意愿打印 'b',但如果我尝试这样做,它会打印一个奇怪的问号。
char p[50];
char x = argv[1];
scanf(" %[^\n]s", p);
printf("%c\n", x+p[0]);
因为我想 运行 像 ./prog 1 这样的程序,并且 1 将添加到字母的值中,因为 'a' 将变为 'b' . 但它打印出来:�.
我可以看到您添加的是字符而不是整数。你必须考虑的是,例如'1' 的值(在 ASCII 49 中)与 1 不同。此外,argv[1]
主要是指向 char 的指针,因此这应该会警告您正在从指针生成整数。因此,您必须先将 argv[1]
(在本例中为字符数组 - 字符串)转换为整数。如果有这样的说法,当然可以(访问前需要检查)。
如果你的 argv[1]
来自 main(int argc, char *argv[])
你使用的是指针而不是字符。
查看声明 char *argv[]
它说 argv
是指向 char 的指针数组。如果你想在第一个参数中获取作为字符串传递的数字,你必须使用:
char p[50];
int x = atoi(argv[1]);
scanf(" %[^\n]s", p);
printf("%c\n", x+p[0]);