我想知道是否可以将带符号的字符保存到 scanf 函数中
/* Program to scan in a negative char */
#include <stdio.h>
int main (){
signed char myChar;/* trying to save a char as a signed value */
printf("Enter a signed char: ");
scanf("%c", &myChar ); /*main part of the code to scan in a signed char */
printf("You entered: %c \n", myChar); /*returns a signed char*/
return 0;
}
您需要使用不同的格式:
#include <stdio.h>
int main (){
signed char myChar;
printf("Enter a signed char: ");
scanf("%hhd", &myChar );
printf("\nYou entered: %hhd \n", myChar);
return 0;
}
是否可以将
输入到signed char
函数中?scanf
是的。 OP的
signed char myChar; scanf("%c", &myChar );
还可以。
更清楚地说,用户正在输入文本,并且可以成功保存在
signed char
中。
详细信息:您有 2 个广泛的选择
scanf()
从用户那里读取文本并将其保存到各种对象中。
读入一个字符并保存该字符代码
如果您想读取输入
"0"
并将其保存为字符 '0'
(例如 ASCII 48),请使用以下 3 种形式中的任何一种。 "%c"
期望匹配的指针为 char *
、signed char *
或 unsigned char *
*1。
char myChar_plain;
scanf("%c", &myChar_plain );
signed char myChar_signed; // OP like code
scanf("%c", &myChar_signed );
unsigned char myChar_unsigned;
scanf("%c", &myChar_unsigned );
读取数字文本并将该文本保存为整数
如果您想读取
"0"
、"123"
、"-123"
、"+123"
、" 123"
等输入并保存为整数(尽管是小整数),请使用以下 2 种形式中的任何一种。
signed char myChar_signed;
scanf("%hhd", &myChar_signed );
unsigned char myChar_unsigned;
scanf("%hhu", &myChar_unsigned );
代码可以使用
d
代替 u
和 b, d, i, o, u, x, X, n
,用于其他碱基等。b
与 C23。
好的代码,在这些情况下,会检查
scanf(...) == 1
以查看输入和转换是否成功。
*1 A
void *
也是可能的。不过还是留到以后再说吧。
如果不存在 l 长度修饰符,则相应的参数应为指向
、char
、signed char
或unsigned char
的指针,该指针指向足够大以接受序列的存储。 C23dr § 7.23.6.2 12void