Home > Blockchain >  C ignore dashes on scanf
C ignore dashes on scanf

Time:12-05

I'm trying to load in two values from a string separated by " - ".
I can't figure out what to put in the scanf to ignore this dash.

Here's a simplified snippet that illustrates the problem:

char first[3];
char second[3];

char* str = "foo - bar";
sscanf(str, "%s <what should be here> %s", first, second);

printf("%s %s", first, second);

If nothing is placed in the placeholder the program prints "foo -"

CodePudding user response:

To tell scanf to expect a -, put a - in the format string:

sscanf(str, "%s - %s", first, second);

Also, make your arrays big enough to hold the characters you expect plus a terminating null character:

char first[4];
char second[4];

You should also limit scanf to the size of the receiving arrays:

sscanf(str, "%3s - %3s", first, second);

If the - might not be present, you need additional code to handle that; a simple scanf is insufficient. Similarly, if the strings might be longer than three characters, you need additional code.

  • Related