Übungen zu "Programmieren in C mit dem z88dk"

Software-Entwicklung, Compiler, Interpreter, ...
Antworten
Benutzeravatar
bbock
Beiträge: 222
Registriert: 08.02.2015, 15:31

Übungen zu "Programmieren in C mit dem z88dk"

Beitrag von bbock »

Übung 1

Der Benutzer soll die Adresse einer Person eingeben. Diese wird anschließend in einer Textdatei namens adressen.txt gespeichert. Nach dem Speichern erscheint eine Abfrage, ob eine weitere Adresse eingegeben werden soll. Wird die Abfrage bejaht, dann wird eine weitere Adresse eingegeben, die dann an die Textdatei adressen.txt angehängt wird. Wird sie verneint, dann wird das Programm beendet.

Einzugebende Felder:
Name
Vorname
Straße
PLZ
Wohnort
Telefon
E-Mail

Darstellung in der Textdatei (Beispiel):
Hugo Hirsch
Schloßallee 3
67118 Frankfurt
069 12345678
hugo.hirsch@pappnase.de
Paul
Beiträge: 104
Registriert: 17.09.2017, 22:27
Wohnort: Germanys west end

Re: Übungen zu "Programmieren in C mit dem z88dk"

Beitrag von Paul »

Wie kann ich auf der Joyce und der CP/M Box das @ eingeben?
kurt
Beiträge: 137
Registriert: 26.10.2019, 20:11

Re: Übungen zu "Programmieren in C mit dem z88dk"

Beitrag von kurt »

hmm, bei CPM-Box (V1.92) tatsächlich komplette Fehlanzeige. Auf meiner Joyce geht es mit SHIFT-3. Wenn Du kannst (und hast), versuch eine andere CPM3-Version zu booten. Bei mir hatte ich mit der J15CPM3 auf vielen Tasten keine Reaktion, mit der J18CPM3 ergaben fast alle Tasten was aufgedruckt war, bis auf ÄÖÜ und + etc. Da kommt eckige und geschweifte Klammer etc. Die verwendete CPM3-Version ist meistens schuld, wenn Tastaturzeichenprobleme auftreten, da länderspezifisch (John Elliott hat auf seiner Homepage zur Joyce eine Tabelle hierzu).

Hier ein paar Varianten zur Auswahl:
PCW8xxx_Boot-Disks-Versions.pdf
(35.03 KiB) 8-mal heruntergeladen
joyce-cpm3-varianten.zip
(144.52 KiB) 9-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 222
Registriert: 08.02.2015, 15:31

Re: Übungen zu "Programmieren in C mit dem z88dk"

Beitrag von bbock »

Solltet ihr Schwierigkeiten haben die Eingabe benutzerfreundlich hinzubekommen, dann hilft euch vmtl. folgende Eingaberoutine:

Code: Alles auswählen

#include <stdio.h>
#include <conio.h>

#define CH_BEEP        7
#define CH_BACKSPACE   8
#define CH_RETURN     10
#define CH_AT         22
#define CH_SZ        126
#define CH_DEL_LEFT  127


/* Input a string with up to maxlen characters via keyboard.
   Parameters: cp      pointer to character buffer
               maxlen  maximum input length allowed
 */
void inputString(char *cp, int maxlen) {
    char key;
    char *ptrBuf;
    int numChars;
    
    ptrBuf = cp;
    *ptrBuf = '\0'; // we start with an empty string
    numChars = 0;
    
    for (;;) {
        key = getch();
        
        if (key == CH_RETURN) { // finish input if <return> pressed
            putchar('\n');
            break;
        }
        
        if (numChars < maxlen) {
            if (key >  31 && key < 126 || // regular characters
                key >  90 && key <  94 || // uppercase Umlaut
                key > 122 && key < 126 || // lowercase Umlaut
//              key == CH_AT ||
                key == CH_SZ)
            {
                putchar(key);    // print character on screen
                *ptrBuf++ = key; // write key to buffer
                *ptrBuf = '\0';  // finalise string and point to the '\0' character
                ++numChars;
            }
            else {
                if (key == CH_DEL_LEFT && *cp != '\0') { // delete left and characters available
                    putchar(CH_BACKSPACE); // move left
                    putchar(' ');          // overwrite with blank
                    putchar(CH_BACKSPACE); // move left again
                    *--ptrBuf = '\0';      // shortens the string by 1 char
                    --numChars;
                }
                else {
                    putchar(CH_BEEP); // invalid key typed => beep
                }
            }
        }
        else {
            putchar(CH_BEEP); // maximum number of characters reached => beep
        }
    }
}
Paul
Beiträge: 104
Registriert: 17.09.2017, 22:27
Wohnort: Germanys west end

Re: Übungen zu "Programmieren in C mit dem z88dk"

Beitrag von Paul »

Ich habe Form3 verwendet.
Wenn ich zurück bin poste ich meine Lösung mal. Bin momentan in Franken
Antworten