Aus einem String alle Leerzeichen entfernen

Nicht, wenn der ursprüngliche String noch benötigt wird, denn strtok() verändert den Eingabestring.
Was aber wohl kein Problem darstellt, zumindest nach dieser Beschreibung:

Das Ganze würde nacher folgendermaßen aussehen
1. Lies Zeile aus Datei in String
2. Entferne alle Leerzeichen aus dem String
3. Werte String aus (eigentliche Operation)
4. Speicherplatz wieder freigeben

Insofern könnte man die Funktion auch gleich in situ arbeiten lassen:

C:
#include <stdio.h>

void eraseAllBlanks(char* str) {
  char* out = str;
  const char* in = str;

  while (*in) {
    if (*in != ' ') {
      *out = *in;
      ++out;
    }
    ++in;
  }

  *out = '\0';
}

int main() {
  char str[] = "Hal  lo We  lt   !";

  puts(str);
  eraseAllBlanks(str);
  puts(str);

  return 0;
}

Ausgabe:
Code:
Hal  lo We  lt   !
HalloWelt!

Grüße,
Matthias
 
Zurück