[Gpsbabel-code] sscanf blindness on optional fields
Brought to you by:
robertl
From: Robert L. <rob...@us...> - 2006-07-07 15:49:55
|
I'm losing my mind and thought I'd offer someone here a chance to make fun of me. Throughout the code, we make use of the ability of scanf to match the inversion of a given set of characters. I'm staring at a problem report that boils down to the following case: #include <stdio.h> main() { int d; char one[20]="one", two[20]="two"; d = sscanf(",blah", "%[^,]%c", one, two); printf("Scanned %d\n", d); printf("One: '%s'\n", one); printf("Two: '%s'\n", two); } It's my expectation that 'one' should match on characters up to the comma (which would happen to be none and therefore be a null terminated buffer) and 'two' would get the next character which would happen to be the comma. On multiple OSes, sscanf is returning zero indicating matching failures so that match is just not happening. Neither buffer is stored into, of course. We use this construct in several places through the code, so either we have this broken in several places or I'm overlooking something dumb. What am I missing? RJL |