[C] Zeichen decodieren - wie fange ich am besten an ?

German

Well-Known Member
c-b Experte
#21
Die Aufgabe hat sehr wenig mit C zu tun. Das ist nur Beiwerk. Grundsätzlich geht es darum einen Lösungsweg für ein Problem zu finden, der in großen Teilen auch noch in der Aufgabe vorgegeben ist. Der Rest ist Mathe auf Grundschulniveau. Nicht falsch verstehen, aber genau darum geht es nach deinem Studium - Lösungen finden.
Was wäre das den wenn ich Fragen darf?
Werfe doch endlich mal deinen Compiler an und finde es raus! Und vor allem versuche den Code zu verstehen.
 
#22
Okay okay :)
Ich weiß gerade nicht, wo das Programm das Decodierte Wort ausgibt.
Wir hatten das bisher immer mit printf("xyz %d", ausgabe) gemacht. Hier wurde das nur anders gelöst, aber weiß nicht wie.
Genau wie mit der Eingabe da wir bisher immer scanf () benutzt haben. :) Ich hoffe da kannst du / ihr mir das nur kurz die Zeile schreiben. :)
 

Mat

Well-Known Member
c-b Experte
#23
Dann kannst du ja putchar durch printf ersetzen, wenn dir das besser passt.

Ansonsten geht's so:
  1. Kompillieren
  2. Resultat (ausführbare Binärdatei) in Terminal aufrufen
  3. Ein paar Zeichen eingeben und mit RETURN bestätigen
  4. putchar schreibt die umgewandelten Zeichen in die Ausgabe
 

German

Well-Known Member
c-b Experte
#28
Der C Standard gibt unter Punkt 5.1.2.2.1 grundsätzlich 2 Möglichkeiten vor. Einmal ohne Parameter (void) oder mit 2 Parametern wobei der zweite ein NULL-terminiertes Array von '\0'-terminierten Strings ist und die Argumente enthält die an das Programm übergeben wurden, während der erste Parameter die Anzahl der im Array enthaltenen Strings angibt.
Weiterhin sagt der Standard
or equivalent; or in some other implementation-defined manner.
Letzteres ist das was @lano gepostet hat. Sein envp ist ein NULL-terminiertes Array von Strings die die vom aufrufenden Prozess geerbten Umgebungsvariablen enthalten. Mit dem gcc Compiler ist diese Parameter verfügbar, mit dem VC von Microsoft auch, wenn ich mich recht erinnere.

Wie auch immer, da du keine Programmparameter verarbeitest, ist das void an dieser Stelle völlig okay.
 
#29
Bevor die Zeichen ausgegeben werden sollen, soll ein einfaches "Ausgabe: " stehen.
Woltle dabei die Funktionen:
char* in="charcode" char* out="chardcode"
in=strcat(in, chaorcode out=strcat(in, charcode)
doch dies funktioniert nicht. Kann man anders vor der Schleife ein einfaches "Ausgabe: " hinzufügen?
 

German

Well-Known Member
c-b Experte
#30
putchar() schreibt zeichenweise dort wo der Cursor gerade steht. Also legst du dir eine Hilfsvariable an und initialisierst sie mit einem bestimmten Wert. Zu Beginn in der while Schleife prüfst du diesen Wert. Wenn er unverändert ist, schreibst du dein "Ausgabe: " mit einem printf() Aufruf und änderst dann den Variablenwert. So stellst du sicher, dass diese Ausgabe nur in der ersten Schleifeniteration erfolgt, und noch vor der Ausgabe des ersten veränderten Zeichens.
 
#31
putchar() schreibt zeichenweise dort wo der Cursor gerade steht. Also legst du dir eine Hilfsvariable an und initialisierst sie mit einem bestimmten Wert. Zu Beginn in der while Schleife prüfst du diesen Wert. Wenn er unverändert ist, schreibst du dein "Ausgabe: " mit einem printf() Aufruf und änderst dann den Variablenwert. So stellst du sicher, dass diese Ausgabe nur in der ersten Schleifeniteration erfolgt, und noch vor der Ausgabe des ersten veränderten Zeichens.
C:
......
if(a=0||a>charcode||a++){
    printf("Ausgabe");
   }
......
a ist die Variabel die ich auf 0 setze
a wird hochgezählt auf 1
somit ist der charcode größer wie a und die if Abfrage hört auf oder?

Funktioniert aber nicht.
 

German

Well-Known Member
c-b Experte
#32
C:
if (a == 0)
{
  printf("Ausgabe: ");
  a = 1;
}
Keine Ahnung was dein Konstrukt machen sollte. Aber von hochzählen habe ich nichts geschrieben. Statt 1 kannst du auch 4711 verwenden, Hauptsache a ist bei der nächsten Iteration nicht mehr 0.
 
Oben