Wie kann ich mit C Kleinbuchstaben in Großbuchstaben umwandeln?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
#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).

Vikogamer 
Fragesteller
 06.12.2021, 20:36

#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.

0
KolnFC  06.12.2021, 20:46
@Vikogamer

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...

0
KolnFC  06.12.2021, 21:04
@Vikogamer

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.

0
Vikogamer 
Fragesteller
 06.12.2021, 21:08
@KolnFC

#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

0
KolnFC  06.12.2021, 22:27
@Vikogamer

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;
}
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