Leerzeichen aus eingelesenem char-Array entfernen, aber wie?
-
Hallo Leute,
ich habe ein klitze kleines Problem, ich will für ein Referat im Informatikunterricht ein kleines Verschlüsselungsprogramm schreiben.
Ich deklariere ein char-Array bzw. C-String und lese mit cin.getline() ein. Ich möchte gerne die ganzen eingegebenen Leerzeichen zwischen den Wörtern entfernen, aber ich weiß nicht wie ich das machen soll... kann mir jemand helfen?
Hier ein kleines Codebeispiel zu dem ich gerne ein Codebeispiel hätte, wie man Leerzeichen entfernt, deren Position man noch nicht kennt:char carray[100]; cin.getline(carray, 100);soweit ich weiß gibt es eine headerdatei (cctype) die eine funktion liefert, womit man feststellen kann, ob ein zeichen ein leerzeichen ist, aber wie ich das festgestellte leerzeichen entfernen kann wäre mir schleierhaft... Würde mich über eure Hilfe echt freuen.
Aber ich glaube zum überprüfen habe ich schon einen Ansatz:
char carray[100]; cin.getline(carray, 100); char tmp; for(int i = 0; i < strlen(carray); i++) { tmp = carray[i]; if(isspace(tmp)) { // Ende des Ansatzes } }Aber ob das soweit ok is, weiß ich nicht und falls es richtig ist, weiß ich nicht wie ich weitermachen könnte.
Gruß,
aikiguy91
-
Wenn du es manuell machen willst, musst du bei einem Leerzeichen eben alle nachfolgenden Zeichen (einschliesslich
'\0') um eins nach vorne kopieren.Schau dir sonst vielleicht mal std::remove_if() an. Überhaupt solltest du besser mit Strings als Arrays von
chararbeiten.
-
uih, zum glück fragste im c++-forum.
char carray[100]; cin.getline(carray, 100); char tmp; *remove_if(carray,carray+strlen(carray),isspace)=0;aber vielleicht magste lieber
char carray[100]; cin.getline(carray, 100); char narray[100]; char narrayLen=0; for(int i = 0; i < strlen(carray); i++) { char tmp = carray[i]; if(isspace(tmp)) { // tunix } else { narray[narrayLen]=tmp; ++narrayLen; } } narray[narrayLen]=0;
-
