"strlen" hört ab LEERZEICHEN auf zu "zählen"
-
HI,
ich habe folgendes Problem...
In meinem Programm, soll strlen die Länge eines Strings bestimmen, hört aber bei Leerzeichen auf zu "zählen", weiß einer von euch warum, oder wieso?#include "stdafx.h" #include "stdio.h" #include "iostream" using namespace std; void main() { char c; char string[100]; char string_help[100]; double laenge; int i = 0; int x = 0; printf ("Eingabe: "); fflush(stdin); cin >> string; laenge = strlen(string ); for (i=0; i<= laenge; i++) { fflush(stdin); c = string[i]; if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c == '\\' || c == '.' || c == ':' || c == ' ' || c >= '0' && c <= '9' || c == '_') { string_help[x] = c; x++; } } string_help[x] = '\0'; cout << "Ausgabe (korrigier): "; cout << string_help; fflush(stdin); getchar(); }Greetz
Die Eule
-
Zwei Sachen ;):
- "cin" liest nur bis zum Leerzeichen ein
- Die einzelnen "a&&b" in der langen if-Bedingung würde ich einklammern
-
das ist c++ und kein ansi c

-
Und bei fflush(stdin) kommt es zu undefinierten verhalten...
klick michGruß
zeigerzeiger
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ehm und for (i=0; i<= laenge; i++) macht aua ^^ muss i < laenge heißen
bzw das macht nicht aua aber string[laenge] ist immer '\0' == 0.
-
#include <iostream> #include <limits> using namespace std; void clear_stream(istream& in) { in.clear(); in.ignore(numeric_limits<streamsize>::max(), '\n'); } int main() { char eingabe[100]; char ausgabe[100]; char c = 0; size_t j = 0; cout << "Eingabe: "; cin >> eingabe; clear_stream(cin); for(size_t i = 0; i < strlen(eingabe); ++i) { c = eingabe[i]; if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '\\' || c == '.' || c == ':' || c == ' ' || (c >= '0' && c <= '9') || c == '_') { ausgabe[j] = c; ++j; } } ausgabe[j] = '\0'; cout << "Ausgabe: " << ausgabe << std::endl; cin.get(); }
-
Vielen Dank für, all die Hilfe, vorallem für die schnelle! Hilfe.
Habs umgesetzt (hoffe ich :D) und nun funzts auch wie gewünscht XDDanke
Die Eule