c语言使用sscanf将字符串拆分为int和char两个变量

时间:2021-07-13 07:51:06

标签: c linux scanf embedded-linux

这是我的代码片段和输出。这里 config_time 值我从 .txt 文件中读取,它的值“15s”(不要说你没有初始化),这个值是用户定义的配置时间,这就是我阅读的原因这个值来自文件。我想要 15s 形式的输出。即value=15 param= s

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void fun ()
{
  char config_time[20];
  int r;
  char param;

  int value;
  printf("%s\n",config_time);
  r = sscanf (config_time, "%d%c", &value, &param);
  printf ("v= %d   p=%c \n", value, param);
}

输出***

"15s"
v= 1995421524   p=v

提前致谢

1 个答案:

答案 0 :(得分:0)

你需要跳过引号

char param, config_time[20] = "\"15s\"";
int value;
printf("%s\n", config_time);
int r = sscanf(config_time + 1, "%d%c", &value, &param);
//                         ^^^ skip the initial quote
if (r != 2) /*error*/;
printf ("r = %d   v= %d   p=%c\n", r, value, param);

或者在格式字符串中使用文字引号:sscanf(config_time, "\"%d%c\"", ...)