Die Funktion printf

#3129521
Lesenswert?

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");
Moderator #3129742
Lesenswert?

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
$%&@}!#

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren