Hey, ich habe in einem Programm(C) mit #define eine Konstante definiert, nun möchte ich diese mit printf("%?", konstante) aufrufen. Wie ist das möglich? Mit freundlichen Grüßen, C-Anfänger
Wenn du die Möglichkeit hast, einen Typen für die Konstante anzugeben, würde ich immer "const x y = z;" bevorzugen, mit Präprozessormakros macht das einfach keinen Spaß.
C-Anfänger schrieb: > Wie ist das > möglich? Das hängt von der Konstante ab. %d, %f oder auch %s oder oder doer...
1 | #define BLUBB "Haus"
|
2 | |
3 | #include <stdio.h> |
4 | |
5 | int main(){ |
6 | |
7 | printf("%s",BLUBB); |
8 | |
9 | }
|
Timmo H. schrieb: > #define BLUBB "Haus" > > #include <stdio.h> > > int main(){ > > printf("%s",BLUBB); > > } Ahhh, vielen Dank! Aber wieso genau steht haus in Anführungszeichen?
Weil es ein String/eine Zeichenkette ist. Eine Zeichenkette wird in Anführungszeichen geschrieben und erhält damit automatisch die "\0" Terminierung. Diese wiederum ist notwendig, damit printf auch weiß wo der String aufhört. Du solltest dir die C-Grundlagen mal zu Gemüte führen. "#define" ist praktisch nur eine Text-Ersetzung durch den Precompiler. Am Ende steht dort genau das Gleiche wie
1 | printf("%s","Haus"); |
nocheinGast schrieb: > Wenn du die Möglichkeit hast, einen Typen für die Konstante anzugeben, > würde ich immer "const x y = z;" bevorzugen, mit Präprozessormakros > macht das einfach keinen Spaß. In c gibt es keine echten Konstanten, deshalb nimmt man da ja immer Makros dafür.
Oder vielleicht auch so:
1 | #include <stdio.h> |
2 | |
3 | #define STR2(x) #x
|
4 | #define STR(x) STR2(x)
|
5 | |
6 | #define SYMBOL FOO
|
7 | #define NUMBER 123
|
8 | #define STRING "bar"
|
9 | #define GRZKPF $%&@}!#
|
10 | |
11 | int main(void) { |
12 | printf("%s\n", STR(SYMBOL)); |
13 | printf("%s\n", STR(NUMBER)); |
14 | printf("%s\n", STR(STRING)); |
15 | printf("%s\n", STR(GRZKPF)); |
16 | |
17 | return 0; |
18 | }
|
Das STR-Makro macht aus seinem Argument einen String, der mit dem %s-Format von printf ausgeben werden kann. Ausgabe:
1 | FOO |
2 | 123 |
3 | "bar" |
4 | $%&@}!# |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.