2013-04-10 59 views
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”两者“Q”和“我35”参考工作具有与它没有整数?

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

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

将这工作如果 'Q' 被输入(没有整数附后)以及在 “i 35” 被输入(W /整数附后)?

回答

2

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

"Rudolph is 12 years old" 

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

我不太清楚你的第二个问题是什么意思。我相信你问的是"%s %*s %d"格式将与输入中的"q"一起工作。在这种情况下,您应该使用不同的格式,例如"%s""%c"作为单个字符。

作为对您更新的问题的回应,您可以轻松地尝试并查看。在我的测试中,它的输入为"q"sscanf离开int单独但在"q"中读取。

+0

我会编辑我的帖子,使其更清晰 – juice 2013-04-10 23:51:44

+0

已更新的答案。 – 2013-04-11 00:01:27