如何正确使用sscanf?

如何正确使用sscanf?,c,scanf,C,Scanf,我相信这是唯一相关的信息: sscanf("%d:%d:%d", zombies[i].hour, zombies[i].min, zombies[i].sec); 这显然是错误的。我不知道为什么。我试过阅读手册页,显然我需要格式化,但我不明白怎么做 注意 僵尸[i].小时 僵尸[i].min和 僵尸[i].sec来自一系列结构 特定的元素是一个整数 编译器说我是从没有强制转换的整数生成指针 这是什么意思?如何正确使用它?就像scanf一样,您需要传递sscanf

我相信这是唯一相关的信息:

sscanf("%d:%d:%d", zombies[i].hour, zombies[i].min, zombies[i].sec);
这显然是错误的。我不知道为什么。我试过阅读手册页,显然我需要格式化,但我不明白怎么做

注意

  • 僵尸[i].小时

  • 僵尸[i].min和

  • 僵尸[i].sec来自一系列结构

    特定的元素是一个整数

编译器说我是从没有强制转换的整数生成指针


这是什么意思?如何正确使用它?

就像
scanf
一样,您需要传递
sscanf
可以用来存储读取值的指针。您还必须传递一个字符串才能从中读取值

sscanf("1:2:3", "%d:%d:%d", &zombies[i].hour, &zombies[i].min, &zombies[i].sec);
如果不传递指针,则只传递一个值,因此,例如,如果
zombies[i].hour的当前值恰好为45,则类似于:

scanf("%d", 45);

这毫无意义。

什么是僵尸
等等?很抱歉没有早点回复!谢谢如果根据问题标题寻求“正确使用sscanf”,另一个好的做法是-如果有任何方法无法解析-将
sscanf
返回值与预期的转换次数进行比较:
if(sscanf(…)==3)…使用解析值。。。否则…报告/处理错误