0

我有 2 个问题。

在 C++ 参考中

#include <stdio.h>

int main ()
{
  char sentence []="Rudolph is 12 years old";
  char str [20];
  int i;

  sscanf (sentence,"%s %*s %d",str,&i); <---
  printf ("%s -> %d\n",str,i);

  return 0;
}

问题 1. %*s 到底在做什么?

我的程序我正在构建一个哈希表。

它询问用户是否输入

q- quit
i <int> - inserts integer //must be on same line
d <int> - deletes integer //must be on same line
etc....

For example:

in order to insert "35" I would have to type:

i 35

问题 2. C++ 参考对 'q' 和 'i 35' 是否有效,因为 'q' 没有整数?

char choice[10];
char option;
int i;

sscanf(choice, "%c %d", &option, &i);

如果输入了“q”(没有附加整数)以及输入“i 35”(附加了整数),这会起作用吗?

4

1 回答 1

2

这意味着它应该从流中跳过该类型。因此,例如输入流是:

"Rudolph is 12 years old"

第一个%s将捕获"Rudolph"%*s将“读取但忽略” "is"(即不将其存储在变量中),然后%d将读取并捕获12.

我不太清楚你的第二个问题是什么意思。我相信您是在询问该格式是否适用于从输入"%s %*s %d"中读取。"q"在这种情况下,您应该使用不同的格式,例如单个字符"%s""%c"单个字符。

针对您更新的问题,您可以轻松尝试并查看。"q"在我的测试中,它确实可以使用:sscanf的输入,int但会在"q".

于 2013-04-10T23:49:13.917 回答