Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Bloodshed Dev-c++ Compiler, Zeichensatz, Eof

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
27.09.2003, 23:16 Uhr
~werner gross
Gast


Hallo,

Ich bin Anfänger in C und kenne mich auch in der Informatik nicht so gut aus. Ich habe mir den Bloodshed DEV-C++ Compiler heruntergeladen und auf meinem Windows 2000 Professional Rechner installiert. Ich programmiere unter der DOS-Konsole. Das erste Programm "Hallo Welt" hat auch sogleich fein hingehauen. Jetzt habe ich allerdings gleich mehrere Fragen :

1. Frage : Zeichensatz

Ich finde keinen anderen Weg die deutschen Umlaute (ü,ä, etc.) sowie andere speziellen Zeichen wie etwa dans französische "î" oder "é" auf dem Bildschirm ausgeben als :

- Entweder nehme ich jedesmal den Umweg über die Funktion CharToOem() wie zum beispiel :

C++:
#include <stdio.h>
#include <windows.h>

int main() {
    char Oem[2];
    CharToOem("ö", Oem);
    printf("%x\n", (unsigned char)Oem[0]);
    return (0);
}



- Oder ich gebe eben den Buchstaben jedesmal von Hand direkt als Konstante ein, zum Beispiel printf("%c\n", '\x94') um ein "ö" zu schreiben - Muß mir vorher natÜrlich eine entsprechende Liste aller von mir verwendeten speziellen Zeichen erstellt habe.

Beides finde ich sehr umständlich. Gibt es keine andere Lösung? Kann ich nicht irgendwo den Compiler anders einstellen damit er den normalen DOS Zeichensatz verwendet? Ich weiß auch gar nicht mit was für einem Zeichensatz der Compiler tatsächlich arbeitet?


2. Frage : EOF

Wie erzeuge ich auf der Tastatur ein EOF damit folgendes kleine Program die while-Schleife verläßt?


C++:
#include <stdio.h>
main() {
    int c;
    int i = 0;
    printf("EOF internally represented by %d\n",EOF);  // -1
    while((c=getchar())!= EOF) {
        putchar(c);
        ++i;
     }
     printf("%d characters received and displayed",i);
     getchar();  
}


Vielen Dank für Eure Hilfe

Werner Gross

--edit: Pablo. [ cpp ] tags gesetzt --

Dieser Post wurde am 27.09.2003 um 23:21 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.09.2003, 23:22 Uhr
Pablo
Supertux
(Operator)


Deinen ersten Post werde ich löschen, weil du es hier wieder fragst

Bearbeitung:

1. Wenn ich mich nicht irre, muss man die Konsole an diese Zeichensätze anpassen, d.h. dass das Problem nicht von C ist, sondern von der Konsole, von der man ausführt. Ich programmiere unter Linux und dort habe ich solche Probleme niemals.

C++:
printf("äöüß");


wird als äöüß ausgegeben. Aber hier bin ich mir nicht sicher.


2. Strg+D funktioniert bei mir als EOF an der Konsole. Aber nimm besser \n oder (char) 27 wie Flo vorschlägt.




Bearbeitung:

- Es wäre besser, wenn du die Funktion main als int main() deklarierst. Im deinen zweiten Code steht nämlich nur main().

- Wie wäre es, wenn du gcc als compiler nimmst? Es gibt auch gcc für Windows.


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 27.09.2003 um 23:30 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.09.2003, 23:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Beim ersten, nimm einen anderen Editor

zu 2: EOF wirst du per Tastatur nicht hinbekommen! Nimm halt z.b lieber das Return zeichen ( \n ) oder Esc ( 27 )
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.09.2003, 00:08 Uhr
~(un)wissender
Gast


@Pablo
Dev-C++ arbeitet mit dem MingW, ist also gcc!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.09.2003, 00:18 Uhr
Pablo
Supertux
(Operator)


ach so, na dann hast du schon gcc
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.09.2003, 00:23 Uhr
~werner gross
Gast



Zitat:
FloSoft postete
Beim ersten, nimm einen anderen Editor

zu 2: EOF wirst du per Tastatur nicht hinbekommen! Nimm halt z.b lieber das Return zeichen ( \n ) oder Esc ( 27 )



Das ist aber nicht dasselbe. EOF wird doch in C als Symbolische Konstante verwendet und bei allen Ein-/Ausgaben verwendet.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.09.2003, 00:26 Uhr
~werner gross
Gast



Zitat:
~werner gross postete
[quote]FloSoft postete
[i]Beim ersten, nimm einen anderen Editor

zu 2: EOF wirst du per Tastatur nicht hinbekommen! Nimm halt z.b lieber das Return zeichen ( \n ) oder Esc ( 27 )



Das ist aber nicht dasselbe. EOF wird doch in C als Symbolische Konstante verwendet und bei allen Ein-/Ausgaben verwendet.[/i][/quote]

Der jetzige Editor übernimmt dies Zeichen ohne Probleme. Nur beim Ausführen des Programs werden andere Zeichen auf dem Bildschirm ausgegeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.09.2003, 08:10 Uhr
~(un)wissender
Gast


Das Witzige ist, du kannst bei getchar() etc. die Schleife nicht verlassen, dass macht ausschliesslich das Betriebsystem, nämlich wenn du z.b. bei der Eingabe Enter gedrückt hast, wird zu deinen Programm zurückgesprungen.
Ist eine sehr schlecht Lösung der C-Designer weil nichts dynamisch geht, wenn du das willst musst du mit Hilfe von Betriebssytemrutinen dein getchar() selber schreiben.
Ist nunmal so angestaubt, da kann man nichts machen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.09.2003, 08:28 Uhr
Pablo
Supertux
(Operator)


Darf ich fragen, wozu du diese Schleife benutzen willst, oder machst du nur so als Übung?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.09.2003, 09:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:
~werner gross postete
Der jetzige Editor übernimmt dies Zeichen ohne Probleme. Nur beim Ausführen des Programs werden andere Zeichen auf dem Bildschirm ausgegeben.[/i]

Ja, weil der Editor den Windows Zeichensatz verwendet, die Konsole arbeitet aber mit dem "Dos-Zeichensatz" (eigentlich den ANSI Zeichensatz).
Wenn du z.b UltraEdit benutzt, kannst du die integrierte Funktion "Oem zu Ansi konvertieren" benutzen, bzw gleich einstellen das er alle ö's usw aus dem ANSI-Zeichensatz einfügt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: