如何使用 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]);