大佬教程收集整理的这篇文章主要介绍了C语言——sscanf函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在写一个读取mipi_phy寄存器的脚本中,为解决读取参数支持十六进制或十进制的问题,发现了C库中的解包函数sscanf()
由于@H_235_3@main()获取到的参数是字符串类型,将字符串转换成int
,最开始想到的方式是aoti()
函数,但它无法解析十六进制,后查找文档后发现了sscanf()
,它可以同时把十六进制或十进制数据解析成int
类型。
int sscanf(const char *str, const char *format, ...)
从字符串读取格式化输入。
str -- 这是 C 字符串,是函数检索数据的源。
format -- 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
format 说明符形式为 [=%[*][width][modifiers]type=]
详见:https://www.runoob.com/cprogramming/c-function-sscanf.html
#include"stdio.h"
#include"stdlib.h"
#include"String.h"
int main(int argc,char *argv[])
{
if(argc < 3)
{
printf("read phy reg: [ mipi_rw -r addr ] \n");
printf("write phy reg: [ mipi_rw -r addr val ] \n");
return 0;
}
if(strncmp(argv[1], "-r",16) == 0)
{
unsigned short val=0;
int addr=0;
sscanf(argv[2],"%x",&addr);
printf("read phy reg=[%#x], val=[%#x] \n",addr,val);
return 0;
}
return 0;
}
编译:
gcc mipi_rw.c -o mipi_rw
运行结果:
$ mipi_rw -r 0x5
read phy reg=[0x5], val=[0]
$ mipi_rw -r 5
read phy reg=[0x5], val=[0]
@H_615_2@makefile代码:
include ../../GlobalRules.make
INSTall_DIR = $(APIDEV_DIR)/bin
SRCS += $(wildcard ./*.C)
OBJS += $(SRCS:.c=.o)
CFLAGS += -I$(sHell pwd)
LFLAGS += -L$(sHell pwd)
LFLAGS += -lmipi
%.o:%.c
$(CC) $(CFLAGS) -o $@ -c $^
default:
make all
.PHONY:all
all: $(OBJS)
$(CC) $^ $(CFLAGS) $(LFLAGS) -o $(sHell pwd)/mipi_rw
以上是大佬教程为你收集整理的C语言——sscanf函数全部内容,希望文章能够帮你解决C语言——sscanf函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。