Kann ich in C Leerzeichen in Variablen speichern?

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.


FreshGrades 
Beitragsersteller
 27.10.2022, 15:00

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)

ohwehohach  27.10.2022, 15:05
@FreshGrades

Wie ich vorgehen würde? Hängt ein bisschen davon ab, wo die Zahlen herkommen, aber ganz allgemein geht folgendes:

  1. Alle Ziffern hintereinander unabhängig davon, ob es 6en sind oder nicht in einen String schreiben
  2. 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):

  1. Array von vorne nach hinten durchlaufen:
  2. Wenn eine 6 kommt, prüfen, ob im Ergebnisstring bereits was drinsteht
  3. 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.


norbertk62  27.10.2022, 15:12

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.

FreshGrades 
Beitragsersteller
 27.10.2022, 15:23

jo danke ich probier mal