?
Rüdigers Kritik ist gerechtfertigt, und die Konstante ist in der Tat das, was man als magische Zahl bezeichnet. Es ist keineswegs portabler, statt auf '€' auf '\x80' zu prüfen, ganz im Gegenteil - Windows 1252 ist außerhalb von Windows eine sehr unübliche Kodierungsmethode.
Seinerseits ist der Verweis auf ISO 10646 (≈ Unicode) keine wirkliche Lösung - unter Umständen (etwa, wenn man das Dateiformat vorschreiben kann) mag es möglich sein, sich auf Eingaben in einer bestimmten Kodierung zu verlassen, aber wenn ich etwa Eingaben von der Konsole einlese, ist das im Zweifel nicht der Fall. Es gibt Lösungsmöglichkeiten dafür - ich denke da beispielsweise an iconv - aber leider bewegen wir uns da außerhalb der für Anfänger geeigneten Materie.
@Saal: Wenn es der Anwendungsfall erlaubt, rate ich dir, statt "€" einen in ASCII-7 darstellbaren Bezeichner zu benutzen - "Euro", "EUR" oder so. Ist das nicht möglich aber die Eingabekodierung konstant und nicht die gleiche wie die deiner Quellcodedateien, benutze statt einer magischen Konstante besser eine symbolische. Im Fall von Windows 1252 etwa
#define EURO_CHAR '\x80'
#define EURO_STR "\x80"
/* ... */
double d;
char *pos = strchr(src, EURO_CHAR);
sscanf("%lf " EURO_STR, &d);
Dann musst du im Fall einer Portierung den Code nicht an zwanzig sondern nur an einer Stelle ändern.
Ist es nicht möglich und die Eingabekodierung zur Compilezeit unbekannt, dann melde dich nochmal - das könnte etwas komplizierter werden.