Ich muss schreiben eine solche in C definieren/C++#define Verwendung in C/C++
#define scanf(fscanf(inf,
um jede scanf(
mit fscanf(inf,
literarischen
Aber ich, wie nicht wissen, zu ersetzen ...
Dank
Ich muss schreiben eine solche in C definieren/C++#define Verwendung in C/C++
#define scanf(fscanf(inf,
um jede scanf(
mit fscanf(inf,
literarischen
Aber ich, wie nicht wissen, zu ersetzen ...
Dank
Sie wollen einen Variadic macro verwenden.
In Ihrem Fall, ich glaube, Sie wollen:
#define scanf(...) fscanf(inf,__VA_ARGS__)
Beachten Sie, dass dies nicht tragbar ist. –
Dies könnte funktionieren. –
@Brian: es ist in der C++ 0x-Entwurf und unterstützt von GNU, Intel und Microsoft, so zumindest auf x86 würde ich es für die meisten Zwecke tragbar genug halten – Christoph
Sie nicht eine Klammer ersetzen können. Wenn Sie Visual C++ verwenden, dann können Sie ein variadische Makro verwenden, um zu erreichen, was Sie wollen:
#define scanf(format, ...) fscanf(inf, format, __VA_ARGS__)
Andere Compiler können eine ähnliche Einrichtung haben, aber ich bin nicht mit ihnen vertraut.
Es ist Standard C99. §6.10.3.1 –
Färben Sie mich überrascht. Danke für die Klarstellung. –
C99 Standard soweit ich weiß. – ShinTakezou
nicht möglich, wie Sie natürlich versucht haben.
müssen Sie Dinge wie
#define scanf(S, ...) fscanf(inf, S, __VA_ARGS__)
Siehe z here
EDIT: GNU cpp unterstützt variadic Makros auch; es wird VA_ARGS durch doppelte Unterstrich und endete mit Doppelstrich ... Ich habe Markup zu studieren hier zu entkommen ...
Umgeben Sie Text mit Backticks, um Inline-Code zu erstellen. Es ist der beste Weg, '__VA_ARGS__' in der Mitte eines Absatzes zu schreiben. ;) –
einfach alle Ihren Code schreiben fscanf verwenden und mit einem Makro wie folgt aus den Dateinamen definieren:
#ifdef USE_SCANF
#define SCANF_FILE(file) stdin
#else
#define SCANF_FILE(file) file
#endif
fscanf(SCANF_FILE(blah), "%d", &a);
ich brauche ein schreiben so definieren, in C++
Nein, Sie nicht. Was Sie wirklich tun möchten, ist Umleitung stdin
.
freopen(inf, "r", stdin);
Sagen Sie einfach Nein zu einer solchen Verwendung von Makros. –
@Brian Es ist mehr Neugier als Verwendung ... – Betamoo
C oder C++, und welcher Compiler? –