Programm zum umwandeln von Codes

Zum Buchstabenarray: Nein, auch beim Umgekehrten Umwandeln brauchst du das nicht.
Solange das morsecode-Array seinen Inhalt nach Alphabet sortiert drinnen hat, ist es ja nur logisch, das [0] zu A gehört, [1] zu B usw...
Wenn das allerdings irgendwie durcheinander wäre, bräuchte man das buchstaben-Array, um die Morsecodes zuordnen zu können.

Zum gets_s: Seufz...die neuen VS-Ausgaben.
Naja, wenn er mit gets_s zufrieden ist, lass es so.

Zum sofortigen Schließen: Passiert das nur bei gets_s, und bei scanf nicht?
Was passiert, wenn du als letzten Befehl im Programm ein getchar(); machst?
 
Hallo =)

Das Problem ist das er selbst gets_s nicht erkennt - er bringt halt nur keine Fehlermeldung, er scheint das als "text" zu sehen und nicht als irgendein Befehl. In der MS Hilfe konnte ich leider auch nichts finden. Zum getchar(); da macht er auch rein gar nichts, also er erkennt nicht das es sich um eine Funktion handelt.

Wenn ich nun dies benutze:
Code:
 gets_s (eingabe);
Wandelt er die Buchstaben nicht in Morsecodes um, es schließt sich einfach das DOS-Fenster an diesem Punkt wenn ich versuche einen Buchstaben einzugeben.

Gehört zur getchar vlt. noch irgendeine Funktion o.ä. was ich evtl. vergessen haben könnte?

Grüße,
yappa
 
Aber CRT_SECURE_blabla ist doch nur eine Warnung, das Programm wird ja doch gestartet. Wenn's mit gets() funktioniert, solltest du die Warnung ignorieren. Aber wenn du keine haben willst, kannst du ja mit fgets() den stdin auslesen.
C:
//...
fgets(eingabe,256,stdin);
//...

Gruss
cwriter
 
@Yappa: Hab deine PN erst jetzt gesehen.
Ich glaub, ich weiß, was der Fehler ist.

Zuerst einmal: getchar meinte ich nicht zum Einlesen vom String, sondern vor dem return 0 am Ende.
Damit das Fenster nicht gleich wieder zugeht.

Lies den String mit gets/gets_s oder fgets wie bei cwriter ein.
Im fgets-Fall musst du noch statt 256 deine String-maximallänge reinschreiben.

Das Problem, das die einfach nicht warten, ist wahrscheinlich dein scanf("%d") bei der Auswahl...
scanf und gets vertragen sich leider nicht so besonders.
Nimm statt dem scanf einmal das und probiers dann wieder:
C++:
{
    char e[1024];
    fgets(e,1024,stdin);
    sscanf(e,"%d",&Auswahl);
}

Gruß
 
Hallo ihr 2 =)

jetzt klappt alles soweit, dank eurer Hilfe. Nur ... das mit den Leerzeichen zwischen den MorseCds habe ich immernoch nicht hinbekommen.

Bzw. meine "Lösung" ist einfach ich hau in den Array vor jedes Zeichen einfach noch ein Leerzeichen. Ist sowas okay oder ist das "murx"?
Code:
".- ", "-... ",

Eingefügt habe ich jetzt;
Code:
  {
    char e[1024];
    fgets(e,1024,stdin);
    sscanf(e,"%d",&Auswahl);
}

und;

Code:
fgets(eingabe,256,stdin);



Vielen lieben Dank!!
 
Oh, jetzt stehe ich aber auf dem Schlauch:
Ich glaube, solange du nur von Deutsch -> MC übersetzt ist das kein Problem. Umgekehrt muss dann in Abständen geschrieben werden.
Machst du den whitespace jetzt vor oder hinter die MCs? Vorne gäbe es nämlich Probleme mit dem Satzanfang.
Und einen "murx" gibt es nicht; nur mehr oder weniger elegante Lösungen :)

Wenn's so funktioniert, was ist dann das Problem?

Gruss
cwriter

P.S.: Danke für das Danke :)
 
Ja, das ist Murx (was immer das auch heißen mag).
Vor allem, wenn du die [6] bei der Deklaration so gelassen hast, wie sie ist.
Mach doch einfach bei den printf in der Schleife statt "%s" ein "%s " mit einem Leerzeichen.

Und wieviel Buchstaben hat eingabe nochmal?
256 war das glaub ich nicht...
Beim fgets gehört die Maximalanzahl der Buchstaben rein, und nicht immer 256.
 
Zuletzt bearbeitet:
Also "Eingabe" hat meines Wissens [1234] Zeichen. Geschickter wäre da jedoch eine binäre Zahl, z.B. 1024 oder 2048, da es sonst einige Probleme mit Unicode geben könnte.
Könntest du den ganzen Code posten? Das macht vieles einfacher und man hat eine Übersicht.
Achja, und es gibt eine ganz tolle Funktion in scanf(). Ich zeige sie mal:
C:
//...
scanf("%[^\n]",&eingabe);
//...
Dann hat man keine Probleme mehr mit den Stringlängen und Leerzeichen werden mitgelesen.

Gruss
cwriter
 
Wieso sollte es kein Problem mit Strnglängen mehr geben?
eingabe wird trotzdem nicht automatisch vergrößert.
 
Ja, aber man kann beim fgets() nichts mehr falsch machen -> eine Fehlerquelle weniger.

Gruss
cwriter
 
Zurück