» Klein in-großbuchstaben umwandeln in C

Maximum suchen :)Neuen Thread eröffnenNeue Antwort erstellenZeichenfolge in Großbuchstaben umwandeln (Funktion, Pointer,toupper)
AutorNachricht
Beobachter 
Anmeldedatum: 04.07.2012
Beiträge: 2
20.07.2012, 17:18
zitieren

servus :

Ich soll eine Funktion kleinbu schreiben, die Groß in Kleinbuchstaben umwandelt . Die Funktion erhält als parameter ein Zeichen und gibt den entsprechenden Kleinbuchstaben . Falls die Funktion als Parameter etwas anderes als Klein-groß enthält soll sie den wert 0 zurückgeben.


kann mir vielleicht jdm helfen?

danke
Fm


pn
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
26.07.2012, 17:45
zitieren

Probiers mal damit:

#include <stdio.h>
#include <ctype.h>
#include <string.h>
//wandelt einen einzelnen Kleinbuchstaben in einen Grossbuchstaben um
char grobu(char s)
{
 char dummy = s;
 
 if ((s >= 97) && (s <= 122)) dummy -= 32;
 
return dummy;
}

// Wandelt string string mit Kleinbuchstaben in Grossbuchstaben um
char *gross(char *destination_string, char *source_string)
{
 char *b = destination_string;
 char dummy;
 int i = 0, is = 0;

 while(source_string[is])
   {
    dummy = grobu(source_string[is]);
    b[i++] = dummy;
    b[i] = '\0';
    is++;
    }

return b;
}


int main(int argc, char** argv)
{
char s[110] = "text";
char ccc[110] = {0};
char n;
char *cp = nullptr;
n = grobu(s[0]);   

printf("\n%c --->  %c\n", s[0], n);

printf("\n%s\n", s);
printf("\nTippen Sie einen Text ein, maximal 100Zeichen: ");
scanf("%100[^\n]", s); // Stringeingabe mit Leerzeichen moeglich
cp = gross(ccc, s);
printf("\n*cp=%s\n", cp);
printf("\n%s  >>> %s\n\n", s, ccc);

return 0;
}


Ein anderes Beispiel um in c++ so was zu machen:

/** Testet eigenen tolower-Ersatz*/
/// std::transform applies the given function to a range and stores the result in another range, beginning at d_first.
/// std::transform: transformiert einen Datensatz mit einer Funktion in einen anderen
//
/// begin()   This function gives a reference to the first element.
/// end()     Returns an iterator to the character following the last character of the string.
///
/// OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first,
///                     UnaryOperation unary_op );
///
///   std::transform applies the given function to a range and stores the result in another range, beginning at d_first.
///
///1) The unary operation unary_op is applied to the range defined by [first1, last1).
///3) The binary operation binary_op is applied to pairs of elements from two ranges: one defined by [first1, last1) and the other beginning at first2.
///2,4) Same as (1,3), but executed according to policy. This overload only participates in overload resolution if std::is_execution_policy_v<std::decay_t<ExecutionPolicy>> is true

#include <iostream>
#include <algorithm>  /// for transform
/* Original:
std::string str_tolower(std::string s) {
    std::transform(s.begin(), s.end(), s.begin(),
                /// static_cast<int(*)(int)>(std::tolower)         // wrong
                /// [](int c){ return std::tolower(c); }           // wrong
                /// [](char c){ return std::tolower(c); }          // wrong
                   [](unsigned char c){ return std::tolower(c); } // correct
                  );
    return s;
}*/


std::string str_tolower(std::string s)
{
 std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c){ return std::tolower(c); } // correct
                  );
    return s;
}
std::string str_toupper(std::string s)
{
 std::transform(s.begin(), s.end(), s.begin(),[](unsigned char c){ return std::toupper(c); } // correct
                 );
    return s;
}
void str_tolowerb(std::string *s)
{
 std::transform(s->begin(), s->end(), s->begin(), [](unsigned char c){ return std::tolower(c); } // correct
                  );
}

int main(int argc, char **argv)
{
    std::string s("Exemplar");
    std::string st("TestSTRING ÖÄÜß²³ÖÄÜ tEST");
    std::string sta("");
    std::string stb("");
    std::string stc("");
    *s.begin() = 'e';
    std::cout << s <<'\n';

    auto i = s.cbegin();
    std::cout << *i << '\n';
    ///  *i = 'E'; // error: i is a constant iterator

    auto j = s.end();         //Zeichen nach letzten String-Zeichen ist newline-Zeidchen
    std::cout << *j << '\n';

    sta = st;

    std::cout << "Teststring vorher : " << st << std::endl;
    std::transform(st.begin(), st.end(), st.begin(), (int (*)(int))std::toupper);
    std::cout << "Teststring nachher: " << st << std::endl;
    stb = str_tolower(sta);
    std::cout << "nach str_tolower  : " << stb << std::endl;
    stc = str_toupper(stb);
    std::cout << "nach str toupper  : " << stc << std::endl;
    str_tolowerb(&stc);
    std::cout << "nach str_tolowerb  : " << stc << std::endl;

 return 0;
}

Gruß Guiseppe


 2x  bearbeitet
pn
Beobachter 
Name: Boris
Anmeldedatum: 01.08.2012
Beiträge: 1
Wohnort: NRW
02.08.2012, 00:42
zitieren

Hallo forca...

Ich werde Dir hier mal ein Beispiel zeigen.

Aufgabenstellung:
--------------------
Die Funktion erhält als Parameter ein Zeichen und gibt den entsprechenden Kleinbuchstaben. Falls die Funktion als Parameter etwas anderes ... enthält soll sie den wert 0 zurückgeben.

Funktion
----------
/* Ein Zeichen kleiner machen oder 0 zurueckliefern */
int zlower(char c)
{

c=tolower(c);
if (( c<'a' ) || ( c>'z' )) return 0 ;else return c;
}



Komplettes Beispiel, um eine ganze Zeichenkette zu verkleinern
------------------------------------------------------------------------

#include <ctype.h>
#include <stdlib.h> // sonst warning: incompatible implicit declaration of built-in function 'malloc'^
#include <string.h>
// X-ITEC 08/2012 Boris Köster http://www.x-itec.net

/* Ein Zeichen kleiner machen oder 0 zurueckliefern */
int zlower(char c)
{

c=tolower(c);
if (( c<'a' ) || ( c>'z' )) return 0 ;else return c;
}

/* Eine Zeichenkette umwandeln */

char *umwandeln(char *text,int maxlen)
{
int l=strlen(text);
if (l>maxlen) l=maxlen;
char *speicher;
speicher=(char*) malloc( sizeof(char)*l );

if( (int*)speicher==NULL) {return "";}

int zaehler;

char zeichen;

for (zaehler=0;zaehler <=l;zaehler++)
{
zeichen=zlower(text[zaehler]);
if(zeichen) speicher[zaehler]=zeichen;else speicher[zaehler]=text[zaehler];
}


return speicher;
}


int main(void)
{
char* quelltext="ICH WERDE 12345 UmGeWaNDeLT";
char *neuertext;

neuertext=umwandeln(quelltext,strlen(quelltext));//besser: statt strlen den Buffer begrenzen auf das zu erw. Maximum

printf("Ausgabe: %s",neuertext);
return 0;
}



Hintergrundinformationen
-----------------------------
Hier wird die "Funktion von groß nach klein" umgesetzt.

Es wird Speicher für den neuen String reserviert, der eine maximale Länge nicht überschreiten darf - danach wird jedes Zeichen umgewandelt und der neue String zurückgeliefert. Das Limit sorgt dafür dass die Anwendung stabil bleibt, indem man nicht ausversehen Mega-Datenmengen übermittelt die das Programm ggf nicht mehr handlen kann. Kann kein Speicher reserviert werden, wird "" (leer) zurückgeliefert und man muss dann prüfen, ob das Ergebnis leer ist oder nicht.


Viel Spass

Boris Köster
X-ITEC IT-Consulting
http://www.x-itec.net

Ich freue mich immer über Projektanfragen!


pn
Gast 
02.08.2012, 00:42
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Klein in-großbuchstaben umwandeln in C" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Buchstaben - welche bedetung?
hi .. also ich wollte mal wissen obs ne seite gibt wo jegliche buchstaben und deren "sinn" aufgelistet sind.. also was ich mein ist sowas wie TDI wobei.. also TDI is mir schon klar, ich denke mal auch an sich die meisten aber ich wollte halt...
von heiden
25
960
25.09.2009, 13:51
Raiden
Zahlen, Zeichen und Buchstaben einscannen
Hallo, wenn ich mit scanf etwas einlesen bzw scannen will was aus zahlen, buchstaben und Zeichen besteht, wie muss ich das deklarieren? zb CC6&6 möchte ich einscannen. ist wahrscheinlich easy aber ich habs nicht geschafft...
[C]von pkle
0
203
20.06.2022, 10:57
pkle
Buchstaben oder Zahlen als Marke schützen?
Hallo zusammen, kann man eigentlich Buchstaben oder Zahlen als Marke schützen lassen? Egal welche Kombination? Danke für eure...
von Tüftelmaus
1
452
28.08.2009, 19:16
Daniel_Düsentrieb
Eine string Variable in einzelne Buchstaben teilen
Ich möchte eine string Variable in ihre einzelnen Buchstaben und Zeichen (Auch Leerzeichen) zerlegen. Dabei ist aber der Inhalt der string ein Imput und damit immer unterschiedlich groß. Die einzelnen Zeichen sollen dann in der Richtigen Reiehnfolge in...
[C++]von 3tool3
1
337
25.11.2016, 18:13
Guiseppe
umwandeln 3gp
hat jemand für mich ein programm,womit ich verschiedenes,unter anderem auch .flv dateien,in 3gp fürs handy laden kann ? ud keine testversionen bitte,die nur die ersten 2 minuten oder so wandeln...davon hab ich genug -.- und musik programme oder so,was...
von Tolga
9
713
15.09.2007, 06:08
Tolga
*.avi in *.gif umwandeln?
Frage steht im Titel. Wie geht das? Mit welchen technischen Errungenschaften ist das möglich? Hat wer ne Ahnung?...
von Mattes
7
1.907
26.01.2009, 15:15
mgutt
FLV. Datei Umwandeln
Hallo, weiß einer wie ich eine FLV. Datei in eine normale Musikdatei umwandeln kann? Danke und Gruß...
von Fuchs
5
1.881
05.11.2007, 10:47
Fuchs
AVI in MPG dateien umwandeln?
naja frage steht shcon oben :) weiß das einer...
von Fuchs
16
1.540
28.11.2005, 16:21
mgutt
3gp-Datei in avi umwandeln
Hallo! Wie im Titel schon steht, such ich ein funktionierendes Programm dazu. Sollte aber ne Freeware sein. Hab schon einiges probiert aber nix hat gefunzt. Hatte 3gptoavi und 3gp-converter. Kann es daran liegen das meine Videos über winamp laufen. Bin...
von rancid77
11
3.407
21.05.2007, 16:36
KleenerKrasser
Bassrolle in Gehäusesub umwandeln???
Hi ich brauch mehr Platz im Kofferraum. Dazu wollte ich mir meine Bassrolle in einen Selbstgebauten Gehäusesub umwandeln! Meint ihr sowas ist möglich?? Wenn ja wo krieg ich raus, wie groß (Liter) das Volumen für den Sub seien muss??? P.S hab gerade...
von freac
22
1.941
11.10.2005, 07:07
|rotekugel|
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |