| Autor |
Nachricht |
oxxo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.05.2012
Beiträge: 3
|
oxxo Mitglied
21:41:11 24.06.2012 Titel: |
Konvertierung Text Klein zu Großschreibung |
Zitieren |
Hi.
ein festgelegter Text soll von Klein zu Großschreibung konvertiert werden.
Wieso funktioniert das bei mir nicht? Habe folgende 2 Funktionen:
| Code: | char toupper(char c) {
c -= 20;
return c;
} | |
| Code: | char* gross(char* s) {
for (int i=0;i<30;i++) {
if (s[i]<=122 && s[i] >= 97)
toupper(s[i]);
}
return s;
} | | |
|
|
|
 |
rüdiger
Moderator
Benutzerprofil
Anmeldungsdatum: 11.07.2001
Beiträge: 23067
|
rüdiger Moderator
21:47:02 24.06.2012 Titel: |
|
Zitieren |
toupper modifiziert nicht, sondern gibt den neuen Wert zurück. |
_________________ .
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17931
|
SeppJ Moderator
21:48:53 24.06.2012 Titel: |
|
Zitieren |
toupper gibt's auch in der Standardbibliothek und der macht es besser. Dein Fehler: Du kopierst das Zeichen, gibst dann ein verändertes Zeichen zurück, verwirfst diesen Rückgabewert. Nochmal Funktionen, insbesondere Funktionsargumente und Funktionsrückgabewerte angucken.
Design:
1. Die Prüfung, ob es überhaupt ein klein geschriebenes Zeichen ist, gehört von der Logik her zu toupper.
2. Deine Schleifenabbruchbedingung ist Müll. Nimm lieber s[i] != '\0' als Abbruchbedingung (oder kurz: s[i], oder noch kürzer, lass i weg und zähl direkt s hoch). Nochmal C-Strings angucken und verstehen, warum das besser ist. |
_________________ Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
Zuletzt bearbeitet von SeppJ am 21:51:53 24.06.2012, insgesamt 1-mal bearbeitet |
|
 |
Wutz
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.04.2010
Beiträge: 2689
|
Wutz Mitglied
21:58:25 24.06.2012 Titel: |
|
Zitieren |
Bei toupper/tolower und sonstigen Konsorten aus ctype.h sollte zur Vermeidung immer explizit nach unsigned char bei der Argumentübergabe gecastet werden, sonst erhält man im Falle vom implementierungsabhängigen char => signed char und negativen chars (resultierend bei >127) undefiniertes Verhalten. |
_________________ Java, the best argument for Smalltalk since C++. -- Frank Winkler
|
|
 |
gary1195
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.04.2008
Beiträge: 181
|
gary1195 Mitglied
16:58:10 25.06.2012 Titel: |
|
Zitieren |
Damit Umlaute richtig behandelt werden ist es unter Umständen nötig das du setlocale() benutzt. |
|
|
|
 |
noergel
Unregistrierter
|
noergel Unregistrierter
15:56:34 26.06.2012 Titel: |
|
Zitieren |
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
16:53:50 26.06.2012 Titel: |
|
Zitieren |
| noergel schrieb: | | strupr() aus string.h |
Ist selbst in C11 noch nicht im Standard, und somit auch nicht in <string.h>
Zudem soll er doch lernen und üben. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|