Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用sscanf获得单个字符_C_Scanf - Fatal编程技术网

如何使用sscanf获得单个字符

如何使用sscanf获得单个字符,c,scanf,C,Scanf,我试图使用sscanf将字符串中的单个字符转换为相应的十六进制值 #include <stdio.h> int main () { char *str = "DEADBEEF"; int num; sscanf(str[2],"%x",&num); printf("%x",num); } #包括 int main(){ char*str=“死牛肉”; int-num; sscanf(str[2]、“%x”、&num); print

我试图使用
sscanf
将字符串中的单个字符转换为相应的十六进制值

#include <stdio.h>

int main () {
    char *str = "DEADBEEF";     
    int num;
    sscanf(str[2],"%x",&num);
    printf("%x",num);
}
#包括
int main(){
char*str=“死牛肉”;
int-num;
sscanf(str[2]、“%x”、&num);
printf(“%x”,num);
}
当我尝试编译时,会收到一条警告,因为
sscanf
正在查找
char*
而不是单个
char
。我可以使用“与”来获取字符的地址(即
&str[2]
),但这将读取字符串的其余部分,直到它遇到一个
\0
由以下公式求解:


使用
sscanf(&str[2]、“%1x”、&num)
您可以读取单个字符,而不是像
sscanf
可以读取的那样大的整数。

@lowerer我正在尝试从字符串中读取单个字符,然后将其读取为十六进制。在本例中,我想读取
A
(索引2处的字符)并将其转换为值为
0xA
的int,然后您想使用
&str[2]
,因为这是保存
A
的地址(
sscanf
需要您正在读取的字符串的地址),但是,然后使用类似于
%1x
的方法将单个字符读取为整数,而不是
%x
,后者将读取的整数(十六进制数字)与
sscanf
可以读取的整数一样大。使用
if(sscanf(&str[2],%1x“,&num)!=1){…oops…}
。请参阅。您需要
&num
而不是
num
。有关错误检查的更完整解决方案,请参见@JonathanLeffler注释。