是否可以在scanf函数中输入带符号的字符

nom7f22z  于 2023-08-03  发布在  其他
关注(0)|答案(2)|浏览(99)

我想知道是否有可能将一个带符号的char保存到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;
}

字符串

0yycz8jy

0yycz8jy1#

您需要使用不同的格式:

#include <stdio.h>
int main (){
    signed char myChar;
    printf("Enter a signed char: ");
    scanf("%hhd", &myChar ); 
    printf("\nYou entered:  %hhd \n", myChar); 
    return 0;
}

字符串
https://godbolt.org/z/f1785qbvK

d7v8vwbk

d7v8vwbk2#

是否可以在scanf函数中输入signed char
是的,OP的signed char myChar; scanf("%c", &myChar );可以。
更清楚的是,用户正在输入 text,并且可以成功地保存在signed char中。
详细信息: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"这样的输入,并保存为一个整数,尽管是一个小整数,那么使用下面两种形式中的任何一种。

signed char myChar_signed;
scanf("%hhd", &myChar_signed ); 

unsigned char myChar_unsigned;
scanf("%hhu", &myChar_unsigned );


除了du之外,代码还可以使用b, d, i, o, u, x, X, n作为其他碱基,等等。b与C23。
在这些情况下,好的代码会检查scanf(...) == 1以查看输入和转换是否成功。

  • 1 void *也是可能的。不过,这个以后再说吧。

如果不存在l长度修饰符,则相应的参数应为指向charsigned charunsigned charvoid的指针,该指针指向足够大的存储以接受序列。C23dr § 7.23.6.2

相关问题