使用 scanf 将 digit 的数值赋给 char

assign numeric value of digit into char using scanf

如果我有一个字符:char ch

我想给它分配一个数字的数值,例如,如果用户输入 0,我希望 char 的值为 0 ('[=11=]') 而不是 48 ('0')

如果我尝试 scanf("c", &ch),它将分配 48(0 的 ascii 值),如果我尝试 scanf("d", &ch),我会得到一个错误。

我知道可以通过将其作为字符串接收,然后将其转换为字符,然后使用 ch-'0' 来获取数值来完成,但是如果没有这些额外的步骤是否可行?

assign numeric value of digit into char using scanf

从C99开始,直接的方式是

char ch;
scanf("%hdd", &ch);
// or to insure reading only 1 character
scanf("%1hdd", &ch);

在此之前,以下是常见的。

char ch;
int ch_int;
if (scanf("%d", &ch_int) == 1) {
  ch = ch_int;

或读取 char 并将其字符值转换为数值。 (OP已经很熟悉了)

char ch;
scanf("%c", &ch);
ch -= '0';