[c] Ersetzung in einem String

MastaZulu

Ensign
Registriert
Aug. 2002
Beiträge
207
Hi,
hab folgendes Problem:

ich lese einen Text ein, bei dem Kleinbuchstaben klein bleiben sollen, Großbuchstaben werden zu Kleinbuchstaben, Sonderzeichen sollen gelöscht werden und Enter sowie Leerzeichen sollen zu Leerzeichen umgewandelt werden. Klappt auch ganz gut, bis auf die Enter/Leerzeichen-Ersetzung.
Code:
	while (eingabe_ende != 1)
	  {
		text_zeichen = getchar();
		text_eingabe[i] = text_zeichen;

		if (text_eingabe[i] == '#')
			eingabe_ende = 1;
		
		text_konvertiert[i] = text_eingabe[i];
		i++;
		text_konvertiert[i+1] = '\0';
	  }

	for (i = 0;text_konvertiert[j] != '#'; j++, i++)
	  {
		if ((text_konvertiert[j] >= 'a' && text_konvertiert[j] <= 'z') ||
			 (text_konvertiert[j] >= '0' && text_konvertiert[j] <= '9') ||
			 (text_konvertiert[j] == '#'))
		  {
			text[i] = text_konvertiert[j];
		  }
		else if (text_konvertiert[j] >= 'A' && text_konvertiert[j] <= 'Z')
		  {
			text[i] = text_konvertiert[j] + 'a' - 'A';
		  }
		else if (text_konvertiert[j] == '\n' && text_konvertiert[j] == ' ')
		  {
			text[i] = ' ';
		  }
		else 
		  {	
			text[i] = ' ';
			i--;
		  }
	  }
Wenn ich den Debugger laufen lassen, dann merke ich, dass er in die letzte "else if"-Anweisung bei Enter oder Leerzeichen gar nicht reinspringt, sondern direkt in die "else"-Anweisung. woran kann das liegen?
 
Ändere mal die Bedingung in eine Oder-Abfage um:
if (text_konvertiert[j] == '\n' || text_konvertiert[j] == ' ')

Da du auf gleichheit prüfst(und nicht wie in den anderen Bedingungen auf Wertebereiche >= bzw <= ) kann die die Anweisung nie als "Wahr" ausgewertet werden. Ein Zeichen kann ja schließlich nicht gleichzeitig ein Leerzeichen und ein Enter-Zeichen sein.
 
Zurück
Oben