studiox, vissa format-modifierare är locale-beroende, men inte %Y.
pesc, tack för länken för bugrapporter till Apple. sscanf känns inte som ett alternativ. Min kod ska kunna tolka i princip godtyckliga input- och format-strängar. Men jag hittade på en generell lösning som funkar.
Jag gjorde ungefär så här:
i en .h-fil som inkluderas där strptime () används, och man kompilerar på OS X:
#define strptime my_strptime
my_strptime () som jag bygger in i mitt bas-bibliotek (om man är på OS X), letar i formatsträngen efter %Y%. Om det inte hittas så anropas den vanliga strptime(). Annars så används vanliga strptime() dels för den del som kommer före %Y och dels för den del som kommer efter. Själva %Y delen tolkar my_strptime () själv, 1-4 siffror.
Om %Y% förekommer två gånger i samma formatsträng så går jag bet, men det kan jag leva med.
Inser när jag skriver att det finns en till situation som jag inte hanterar, men den känns inte heller viktig; om t.ex. formatsträngen är %Y1234 t.ex. och inputsträngen är 20081234 så kommer funktionen returnera NULL eftersom den inte hittar 1234 när den tolkat årtalet som 20081234.
Om någon behöver mer detaljer, skicka ett P.M.