使用 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';
如果我有一个字符: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
usingscanf
从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';