ShadyBears
ShadyBears

Reputation: 4185

Char array to integer

I have 2 questions.

Here in the C++ reference

#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;
}

Question 1. What exactly is %*s doing?

My program I'm building a hash table.

It queries the user to either type in

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

Question 2. Would the C++ reference work for both 'q' and 'i 35' since 'q' has no integer with it?

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

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

Would this work if 'q' was entered(no integer attached) as well as if "i 35" was entered (w/integer attached)?

Upvotes: 0

Views: 106

Answers (1)

Jorge Israel Pe&#241;a
Jorge Israel Pe&#241;a

Reputation: 38586

It means it should skip that type from the stream. So for example the input stream is:

"Rudolph is 12 years old"

The first %s will capture "Rudolph", the %*s will "read but ignore" "is" (i.e. not store it in a variable), and then the %d will read and capture the 12.

I'm not quite sure what you mean with your second question. I believe you're asking if the "%s %*s %d" format will work with reading "q" from the input. In that case, you should use a different format, like "%s" or "%c" for a single character.

In response to your updated question, you can easily try it and see. In my tests, it does work with an input of "q": sscanf leaves the int alone but does read in the "q".

Upvotes: 2

Related Questions