Umlaute deaktivieren/austauschen?
-
hi
wie kann ich die Umlaute(Ä,Ü,ß,..) richtig darstellen(in derKonsole)?
Ein Beispiel wäre netbob
-
jeder umlaut hat einen ASCII code.
den speicherst du in einem Int.
diesen int liest du dann mit %c aus und fertig...mal en bsp:
#include "stdafx.h" void main() { int i; for(i=1; i<=255; i++) { printf("%i - %c\n",i,i); } }
Damit kannste dir alle ASCII codes zu den jeweiligen zeichen anzeigen lassen...
das kleine ä hat z.b. den ASCII code 132. will man also ein ä ausgeben kann man das so machen.
int i = 132;
printf("%c",i);hinter dem ascii code 7 verbirgt sich ein pipston.
wenn man das in ne endlosschleife packt hörts nimmer aus zu pipsen...leider habe ich keinen plan obs mitlerweile schon irgendwie möglich ist Uni-code zu verwenden...
-
Erstmals vielen dankeschön
Sqwan schrieb:
jeder umlaut hat einen ASCII code.
den speicherst du in einem Int.
diesen int liest du dann mit %c aus und fertig...mal en bsp:
#include "stdafx.h" void main() { int i; for(i=1; i<=255; i++) { printf("%i - %c\n",i,i); } }
Damit kannste dir alle ASCII codes zu den jeweiligen zeichen anzeigen lassen...
das kleine ä hat z.b. den ASCII code 132. will man also ein ä ausgeben kann man das so machen.
int i = 132;
printf("%c",i);Dies verstehe ich noch immer nicht,diese Zeile:
printf("%c",i);
1.)Wozu printf?Was ist das?Eine C Funktion oder c++?
2.)Könnten Sie mir bitte das ganze printf und die drinnen gelassenen Werte erklären?bob
-
geht klar.
printf() ist keine funktion sondern ein befehl der sprache c.
Er befindet sich in dem header:
stdafx.h
stdio.hdie stdafx.h muss immer im selben projekt ordner sein.
Also keine systemeigene header-dateio.stdio imgegensatz dazu wird mit <stdio.h> eingebunden uns ist eine systemeigene headerdatei...
dann zum befehl printf()
er heist so viel wie formatiertes drucken.
Also formatierte ausgabe auf dem poc...in diesem befel müssen alle strings in " geschrieben werden...
beendet wird der befehl mit einem ;in den strings kann man steuerzeichen benutzen, um variablenwerte an diese stelle einzufügen...
%i, %c, %d, %f, und %lf sind z.b. steuerzeichen...
%c ließt z.b. den character einer variablen aus.
im gegensatz dazu %i den interger einer variablen.variaben werden duch , getrennt an den string angehängt:
printf("Hier drinne steht ein string %i setzt an seine stelle den interger des inhaltes von variable 1.",variable1,variable2);man kann in dem befehl so viele steuerzeichen verwenden wie man variablen anhängt. drauf zu achten ist das jedes steuerzeichen automatisch den nächsten wert nach dem , ausliest und an seine stelle schreibt.
jetzt zu %c und %i.
jedes zeichen hat einen ascii code der das zeichen genau identifizeirt.
in dem fall sind auch zahlen zeichen.jedes zeichen hat einen character und einen interger.
bei ä sähe das so aus.character: ä
integer: 132liest man den character des zugehöhrigen integers aus, so erhält man das zeichen des ascii codes...
ich hoffe mal das war einigermaßen verständlich...
Wenn rechtschreibfehler dindet darf sie behalten und zu eigengebrauch verwenden. Sollte er sie bei ebay oder sonst wo verkaufen erhalte ich 10% des ertrages :p
-
Also danke für die nette und deutliche erklärung
Nur verstehe ich diese da noch immer nicht genau: %i, %c, %d, %f, und %lf.%i ... Integer?Double?Float?
%c ... Char?wchar_t?
%d ... ?
%f ... ?
%lf ... ?Und könnten Sie mir bitte ein Beispiel schreiben,das sich sowohl mit %i auch als mit %c zeigt?
Also ich würde gerne soetwas bekommen bitte,wo nur umlaute sind,also Sätze mit umlauten im Sourcecodebob
-
%i --> Int
%c --> char
%d --> Ganzzahlige dateitypen
%f --> Float
%lf --> Double#include <stdiio.h> void main() { int a = 1; char b= "Hallo"; float c = 1.5; double d= 1.33; int i = 132; printf("int: %i\n char: %c\n float: %f\n double: %lf\n",a,b,c,d); printf("Wir haben sch%cnes wetter heute",i); }
-
Folgende Meldung kommt:
zeiger.cpp:12: error: invalid conversion from `const char*' to `char'
-
Das gehört so:
char c = 'x'; // nur x, ein zeichen const char* str = "Hallo"; // zeichenkette // dann auch noch die richtige ausgabe für ein zeichen: printf("%c", c); // ...und für eine zeichenkette (string) printf("%s", str); // bzw. puts(str);
Zu der Umlautproblematik an sich siehe FAQ!
MfG SideWinder
-
SideWinder schrieb:
Das gehört so:
char c = 'x'; // nur x, ein zeichen const char* str = "Hallo"; // zeichenkette // dann auch noch die richtige ausgabe für ein zeichen: printf("%c", c); // ...und für eine zeichenkette (string) printf("%s", str); // bzw. puts(str);
Zu der Umlautproblematik an sich siehe FAQ!
MfG SideWinder
Also das Problem ist nur,dass ich das was in der Konsole steht,nicht entziffern kann,wenn ich im char ein 'Ä' definieren
Da sind wieder nur solchen anderen Zeichen.Gibt es nun eine Möglichkeit/Methode ein Umlaut so darzustellen,dass man es auch in der Konsole richtig sieht und nicht solche anderen ASCII Zeichen?
-
SideWinder schrieb:
Zu der Umlautproblematik an sich siehe FAQ!
MfG SideWinder
-
SideWinder schrieb:
SideWinder schrieb:
Zu der Umlautproblematik an sich siehe FAQ!
MfG SideWinder
Also ich habe es gerade gelesen.Besonder das hier hat mir sehr gut gefallen und ich würde gerne eine Erklärung haben,warum ...
const unsigned char AE = static_cast<unsigned char>(142); cout<<AE<<"LOL";
.. so const,unsigned und dieses static_cast<unsigned char>(142) vorkommt
-)Also const ist Konstant,das weiss ich schon,aber man muss ja nicht const nehmen oder?
-)unsigned... hmm.. sehr schweres Wort und damit kann man bestimmt auch nichts anfangen oder etwa doch?
-)Wozu dieses static_cast<unsigned char>(142) gut ist weiss ich ja auch nicht.
Was bedeutet ... static_cast
Was bedeutet ... <unsigned char>
Was bedeutet ... (142).. von diesem Beispiel?
Bob
-
SideWinder
Der junge ist genauso anfänger wie ich.
und wenn wir das erstmal so haben das es geht is es gut.
Wir müssen es dann n icht direkt so kompliziert haben das wir nicht weiter kommen, und die lust verlieren.ps: puts und gets kommt in meinem buck fast ganz am ende.
Ich finde meine methode einfacher.
Und deine gibt umlaute trotzdem falsch aus...
was %s und %d angeht. das is ja so wie so nochmal was anderes.
%i und %c sind ja typ abhängig.
%d liest alles ganzzahlige aus.und %c können wir verwenden. wir haben ja nur ein zeichen.
und selbst wenn mir mehr zeichen hätten können wir mit %c das erste zeichen der zeichenkette in der variable auslesen...
-
132 = ascii code für ö
142 = ascii code für ä
7 = ascii code für ein pipsen.unsigned heist ohne vorzeichen.
signed char geht von -128 bis 127 der zaheln.
das leigt daran das ein char 8 bit auf der festplatte reserviert.
das erste bit ist das sogenannte voreichen bit.
ist es 0 ergeben die folgenden 7 zahlen eine positive zahl.
ist das vorzeichen bit 1 so ergeben die nachfolgenden 7 zahlen eine negative zahl.
Doch mann muss damit aufpassen.
Wenn man mit den zahlen rechnet muss man sich bewust sein das die negative zahl mit dem vorzeichen bit 1 ein Zweier-kompliment ist.
Will man die wirkliche zahl haben so muss man das zweier-kompliemnet bilden und danach das einser-kompliment. nun kann man die zahl aumrechnen.Bei Unsigned char stehen der zahl volle 8 bit zur verfügung.
das heist es gibt kein voreichen und somit nur positive zahlen.
Das ist in dem oben bsp wichtig denn ein normaler char würde aus 142 -113 mahen und etwas falsches ausgeben.
da es unsigned char ist geht der bereich aber von 0-255 und kann damit alle zahlen des ascii-codes enthalten.cout gefällt mir auch besser.
Wie man sieht kann man damit aber nicht so einfach character auslesen.
Denn das fehlt dem objekt.
cin>>a;
so kann man z.b. eine eingabe fordern.
getch geht aber auch.
Das problem sind die richtigen header die wir anfänger meisten nicht kennen.
Und wenn nötig auch noch den namensraum öfnen.cout wäre in <iostream> enthalten.
hier brauchen wir einen namensraum.also using namespace std;
nehmen wir <conio.h> brauchen nir den namespace nicht. dafür habe das h.
nutzen wir <iostream.h> brauchen wir den namespace auch nicht.
in der stdafx wäre aber auch scanf() enthalten.
Also man sieht es gibt 100.000 wege.
Wir anfänger sollten den leichtesten wählen.
Wenn wir damit zurecht kommen können wir immernoch auf schwere sachen umsteigen...
-
Ich hab ma iergednwo gesewhen dass das ganze auch viel einfacher geht in dem man die definiert aber wie genau das geht weiss ich leider nicht mehr
-
Sqwan schrieb:
printf() ist keine funktion sondern ein befehl der sprache c.
C kennt keine Befehle.
Deshalb ist printf() auch kein Befehl sondern eine Funktion!mfg tobZel
PS: Man könnte vllt. noch ein paar Schlüsselwörter als Befehle sehen.
-
Wenn wir jetzt mal klugscheissen dürfen ist printf weder ein befehl, noch eine funktion, sondern eine Prozedur, da printf keinen Rückgabewert hat.
-
[cpp]int printf(const char * restrict format, ...);[/cpp]