在C中读取同一行中的字符串和各种整数

时间:2015-05-14 15:42:27

标签: c scanf

我有一个名为buffer的字符串,其中存储了以下数据:
Rb [7,0] 64

使用sscanf(),我想执行以下操作:

  • 阅读Rb并将其存储在名为string
  • name
  • 阅读7并将其存储在名为int
  • posx变量中
  • 阅读0并将其存储在名为int
  • posy变量中
  • 阅读64并将其存储在名为int
  • battery_level变量中

我尝试了以下操作,但它不起作用:

sscanf(buffer, "%s[^\ ] [%d,%d] %d", name, &posx, &posy, &battery_level);

2 个答案:

答案 0 :(得分:2)

我看到的问题:

  1. "\ "不是有效的转义序列。
  2. "%s[^ ]"没有做你期望它做的事情。您需要使用"%[^ ]"
  3. 您可以使用

    sscanf(buffer, "%s [%d,%d] %d", name, &posx, &posy, &battery_level);
    

    sscanf(buffer, "%[^ ] [%d,%d] %d", name, &posx, &posy, &battery_level);
    

    两者都有效。请参阅http://ideone.com/QNuQuY

    上的工作代码

答案 1 :(得分:0)

希望它对你有所帮助。

我编写了一个代码,其中输入将被第一个空格' '符号划分,您也可以使用其他字符,并且改进此逻辑可以获得所需的结果:

#include <stdio.h>
int main()
{
    char buffer[] = "Rb [7, 0] 64";
    int posx, posy, batttery_level
    sscanf(buffer, "%[^ ] [%d,%d] %d", name, &posx, &posy, &battery_level);
    printf("%s [%d,%d] %d\n", name, posx, posy, battery_level);
    return 0;
}