Wie kann ich mit C Kleinbuchstaben in Großbuchstaben umwandeln?
ich muss folgendes programmieren:
Schreiben Sie eine Funktion toggleLetterCase, welche ein Zeichen als
Übergabeparameter erhält. Handelt es sich bei dem übergebenen Zeichen um einen
Großbuchstaben, so wandelt die Funktion das Zeichen in einen Kleinbuchstaben um
und gibt diesen zurück (return). Ist im umgekehrten Fall das übergebene Zeichen ein
Kleinbuchstabe, wird es zu einem Großbuchstaben umgewandelt und zurückgegeben.
ich bekomme es irgendwie nicht hin. Ich muss es wohl irgendwie mit toupper und dann mit tolower machen oder?
3 Antworten
#include <ctype.h>
int islower(int c);
int isupper(int c);
int toupper(int c);
int tolower(int c);
Wären hier wohl geeignete Helferlein.
Achja, Du sollst eh nur ein Zeichen verarbeiten, Deine Funktion möchte wohl folgenden Prototyp haben:
char toggleLetterCase(char c);
In der ASCII Tabelle sind die Buchstaben alphabetisch sortiert, sowohl die Klein- als auch die Großbuchstaben. Wenn du einfach den ASCII Wert eines chars um 32 verringerst erhältst du statt eines Groß- den Kleinbuchstaben (umgekehrt +32 natürlich).
Also zum einen musst du vermutlich bei toupper/ tolower einen integer übergeben, keinen char, zum anderen verstehe ich deinen Code nicht.
Was genau willst du denn mit "if(toupper (ch))" abfragen? Die Funktion konvertiert doch den Buchstaben...
https://www.tutorialspoint.com/c_standard_library/ctype_h.htm
Soll toggleLetterCase ein Marker sein?
Du gibst auch nichts aus, dafür müsstest du ja eine Variable ausgeben (also printf("%c", char), so die Richtung).
Müsste ihr die ctype Bibliothek verwenden? Es wäre viel schneller und effizienter das einfach selbst zu schreiben...
Schreib dir doch ein Struktogramm oder ein Pseudocode. Überlegt dir was dein Programm machen soll, überleg dir welche Variablen du dafür brauchst und Deklariere (und initialisiere) sie direkt am Anfang. Dann überlegt dir den Programmablauf also welche Schritte sollen nach und nach passieren, welche Schleifen musst du dafür schreiben...
Mit dem Plan schreibst du dann dein Programm.
#include<stdio.h>
#include<ctype.h>
int main()
{
int i=0;
char toggleLetterCase[30];
printf("Bitte tippen Sie mit Buchstaben. \n");
scanf("%s",toggleLetterCase);
while(toggleLetterCase[i])
{
toggleLetterCase[i]=tolower(toggleLetterCase[i]);
i++;
}
printf("Ergebnis: %s \n\n",toggleLetterCase);
return 0;
}
habe es jetzt so gemacht :D
So lange es funktioniert, ich verstehe nach wie vor nicht warum man hier eine Bibliothek nutzen sollte, so wäre es besser:
#include <stdio.h>
int main()
{
char in[30] = "\0";
int i = 0;
printf("Please insert a string\n");
fgets(in, 30, stdin);
while (in[i] != '\0')
{
if (in[i] >= 'A' && in[i] <= 'Z')
{
in[i] = in[i] + 32;
i++;
}
if (in[i] >= 'a' && in[i] <= 'z')
{
in[i] = in[i] - 32;
++i;
}
else
{
i++;
}
}
printf("\nNew String is:\n%s", in);
return 0;
}
ASCI Tabelle aufschlagen.
Jeder char ist eigentlich eine Zahl
So was siehst du in der Tabelle? Groß und Kleinbuchstaben sind zusammen und in gleicher Reihenfolge. Wenn du von Groß- zu Kleinschreibung umwandeln willst, musst du lediglich einen Wert vom char abziehen oder drauf rechnen
Fertig
#include <stdio.h>
#include <ctype.h>
int main()
{
printf("Bitte tippen Sie nur mit buchstaben: ");
char toggleLetterCase = 0;
int ch = getchar();
if(toupper (ch)) {
printf("ist eine Kleinbuchstabe.\n");
toggleLetterCase = 1;
}
if(tolower(ch)) {
printf("Grossbuchstabe.\n");
toggleLetterCase = 1;
}
return;
}
wie kann ich das was ich eingebe als antwort kriegen. Z.b ich tippe kleinen a ein und dann soll großes A rauskommen.