C&C++   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。
标签: