Kann ich in C Leerzeichen in Variablen speichern?
dass man sagt a = 5 oder so leerzeichen, sodass sowas rauskommt
printf("%d hallo", a);
----------------------------------
hallo
und nicht
hallo
ich weiß dass es die möglichkeit gibt, eine zahl in das d einzusetzen, aber ich möchte je nach dem in a eine zahl speichern oder in einem anderen fall dann nix ausgeben
oder dass man sagt a= nichts, also dass in a etwas geispeichert ist dass wenn man es ausgibt, nichts anzeigt
dann knnte man es ja mit dem "%5d", a machen
2 Antworten
In C gibt es keine "Nullable Types". Daher ist ein primitiver int in C immer eine Zahl. Du könntest jetzt einen Pointer auf ein int verwenden und diesen auf NULL setzen, wenn keine Zahl eingesetzt ist. Vermutlich wirst Du dann aber eine Fallunterscheidung für die Ausgabe brauchen.
Wie ich vorgehen würde? Hängt ein bisschen davon ab, wo die Zahlen herkommen, aber ganz allgemein geht folgendes:
- Alle Ziffern hintereinander unabhängig davon, ob es 6en sind oder nicht in einen String schreiben
- Solange das erste Zeichen aus dem String schmeißen, bis etwas kommt, was keine 6 ist
Alternative (eventuell möglich, falls die Ziffern bereits in einem Array sind):
- Array von vorne nach hinten durchlaufen:
- Wenn eine 6 kommt, prüfen, ob im Ergebnisstring bereits was drinsteht
- Wenn nein, 6 ignorieren. Wenn ja, 6 als Zeichen hinzufügen
Hi FreshGrades
ich hoffe, ich verstehe deine Frage richtig. Kleiner Abriss:
in einer Variablen in C ist eigentlich (!) immer eine Zahl drin. Aber du beziehst dich ja ausdrücklich auf C und möchtest darin ein Leerzeichen speichern und jetzt weisst du nicht, wie man es reinbekommt.
Background: wenn in C Strings / Zeichenketten verarbeitet werden, dann speicherst du eigentlich (!) in der Variablen, WO das Leerzeichen (der String) zu finden ist (und das bekommt halt einen Namen und der ist bei dir a.
Beispiel:
int <funktion>() {
char a[2]; /* Du brauchst immer! ein Zeichen mehr - kommt gleich */
strcpy( a, " " );
printf( "[%s] zwischen den Klammern ist ein Leerzeichen\n", a );
}
In C besteht die Zeichenkette aus den Buchstaben UND einem abschliessenden NULL-Byte. Daher brauchst du immer ein Zeichen mehr in der Variablen.
Wo diese Zeichenkette im Hauptspeicher liegt, steht dann in der Variablen a.
Nochmal zu deiner Frage: ist ein bisschen unklar. Du schreibst, du möchtest etwas leeres ausgeben, wenn in a nichts gespeichert ist - das geht so nicht, denn es ist in einer Zahl immer was drin; ggf. eben 0, 1, -1 oder so was.
Wenn du das aber ausdrücklich auf einen leeren Wert prüfen möchtest, geht das so wie mit dem String in meiner Antwort - nur eben mit einer Zahl.
Könnte ich auch hier reinschreiben, aber ich weiss nicht ob es das ist, was du suchst. Bitte deutlicher formulieren.
slso sagen wir ich habe das ergebnis 6 6 8 also drei zahlen und ich möchte aber wenn es 6sen vor der 8 gibt nicht ausgeben, dann könnte man das ja lösen indem man sagt wenn ergebnis ganz links==6 && lergebnismitte ==6 printf(%3d, ergebnisletzte(alöso die 8)) und dann der nächste fall dafür dass es eine 6 und dann andere zahlen gibtz und dann noch ein fall dass es nur 6sen gibt, geht das nicht einfach und unkomplizierter?
(sowas soll stehen bleiben 867 aber sowas nicht 676 sondern 76 also immer wenn die 6sen die ersten zhahlen sind)