Beiträge von Ingo

    Ich habe mal eine Frage zum Thema Strukturen:

    Verwendest du möglicherweise einen C++-Compiler um C zu lernen? In der gezeigten Form ist das kein gültiges C-Programm, da fehlt unter anderem das "struct" vor "person" in Zeile 8

    Ausserdem möchte ich nochmal den Hinweis geben, dass man die Compilerwarnungen einschalten, weit hochdrehen und vor allem die gemeldeten Probleme sollte:

    Bitte melde dich an, um diesen Anhang zu sehen.

    (g++ 12.2 via Bitte melde dich an, um diesen Link zu sehen.)

    Ich hab die ganze Zeit am Amiga mit HiSoft C++ programmiert. Dort kann man in den Einstellungen den Modus Default, ANSI-C und C++ wählen.

    Ich hatte ANSI-C eingestellt und trotzdem lief das so ohne Warnungen und Fehler durch:

    D.h. also doch erstmal mit einem "richtigen" C-Compiler lernen...

    Bei "Name" und "Alter" ist das Ergebnis richtig, aber beim Vater kommt nur Müll raus.

    Wie funktioniert sowas?

    Der Zeiger "*vater" muss auf ein gültiges Element zeigen.

    Also muss da vorher sowas wie "pf[0].vater = pf + 1;" stehen, oder NULL zugewiesen (und später überprüft) werden, wenn Vater unbekannt.

    Ja das funktioniert - danke.

    D.h. dass in pf[0] die Person drin steht und in pf[1] dann die Person Vater?

    Wenn ich dann mehrere Personen habe, also z.B. zwei, dann pf[4], kann ich dann zwei Personen mit zwei Vätern eintragen mit jeweils

    pf[0].vater = pf+1 und pf[2].vater = pf+1 ?

    Ich habe mal eine Frage zum Thema Strukturen:

    Bei "Name" und "Alter" ist das Ergebnis richtig, aber beim Vater kommt nur Müll raus.

    Wie funktioniert sowas?

    Es liegt im Ermessen des Compilers, wo er Stringliterale ablegt. Können also auch veränderbar sein.

    Dass diese readonly sind hatte ich auch irgendwo gelesen, deshalb hat's mich gewundert, dass ich die in HiSoft C++ trotzdem verändern kannn.

    Aber wie du schriebst, scheint das Compiler-abhängig zu sein.

    result ist nie initialisiert, zeigt nicht auf einen beschreibbaren Speicher, aber es wird reingeschrieben.

    Ok - deswegen hatte ich ja gefragt. Hätte mich auch gewundert, wenn da automatisch Speicher reserviert würde.

    Ich hab die Funktion stringCompareDif mal abgewandelt - funktioniert auch. Wäre das ok so?

    Hallo,

    ich lerne ja jetzt fleißig C mit dem Tutorial:

    Wie siehts hiermit aus?: Bitte melde dich an, um diesen Link zu sehen.

    Nun bin ich gerade bei dieser Übung, wo bei zwei Strings die unterschiedlichen Zeichen in einem gesonderten String gespeichert werden sollen: Bitte melde dich an, um diesen Link zu sehen. (Musterlösung).

    Hier mal meine Variante:

    Die funktioniert auch, aber meine Frage ist, ist das eher unsauber oder ist das auch üblich?

    Dann bin ich mir nicht sicher, ob die Deklaration von res in main() ok ist (Zeile 11). Wird da Speicher reserviert oder müßte man das selbst erledigen?

    Dass man Floats nicht miteinander vergleicht hatte ich auch noch so im Kopf. Deswegen hat mich das auch gewundert, dass sowas im Tutorial gemacht wird.

    Mit int funktioniert alles.

    Aber dass die Werte a und b nach dem type casting im oberen Bsp. unterschiedlich sind, verstehe ich nicht.

    Wollte mal kurz Rückmeldung zu meinen C-Versuchen geben:

    Ich hab mal den HiSoft C++-Compiler installiert - der ist vom Editor her schon sehr komfortabel.

    Zudem arbeite ich gerade das Tutorial Bitte melde dich an, um diesen Link zu sehen. durch:

    Wie siehts hiermit aus?: Bitte melde dich an, um diesen Link zu sehen.

    Momentan bin ich bei dem Beispiel mit den Verzeigungen:

    Im Online C-Compiler (Hier z.B.: Bitte melde dich an, um diesen Link zu sehen.) funktionieren alle 3 Fälle, am Amiga mit HiSoft C++ nur der 2. und der 3. Fall.

    Im Debugger stehen auch jeweils die richtigen Werte in den Variablen. Trotzdem will's im ersten Fall nicht klappen.

    Ich habe dann auch mal "einwurf" und "preis" mit 10 multipliziert und nach int gecastet, um diese Werte zu vergleichen:

    Code
    int a, b;
    
    a = (int)(einwurf*10);
    b = (int)(preis*10);

    Seltsamerweise steht dann in a=4 und in b=5 drin. Ich frage mich, wie das sein kann ???

    Hallo,

    ich habe meinen Amiga 600 mal wieder rausgekramt. Das letzte mal hatte ich ihn vor ca. 3 Jahren aufgebaut und dann wieder weggestellt.

    Nun geht die Floppy aber nicht mehr. Vor 3 Jahren funktionierte sie noch einwandfrei. Es handelt sich um ein Panasonic Laufwerk JU-253-043P.

    Ich hab mal ein kurzes Video gemacht. Nach dem Einlegen läuft sie kurz an, dann geht sie aus und auf dem Bildschirm erscheint DF0:????.

    Ich habe mal eine andere eingebaut, eine SONY. Die funktioniert. Es liegt also definitiv am Laufwerk.

    Könnte das ein Elko-Problem sein?

    Danke erstmal an alle. Da sind viele Infos und links dabei.

    Ich denke, dass ich mich erstmal mit den Grundlagen vom Amiga vertraut machen werde (hatte schon vor ca. 3 Jahren bisschen was gemacht, aber vieles ist schon wieder vergessen - tja das Alter...)

    Parallel dazu wollte ich mich dann mit C beschäftigen, auch am Amiga.

    Übrigens: Die geschweiften Klammern bekommt man mit Alt + Shift + (ü oder +).

    Hallo,

    ich habe seit langem mal wieder meinen A600 aufgestellt und Lust bekommen, mich mit C zu beschäftigen.

    Den Amiga hab ich mit einer Furia-Karte erweitert, eine SD-Karten-HDD ist auch drin.

    Aber irgendwie blicke ich da nicht ganz durch, was es alles gibt, was auch eine Entwicklungsumgebung hat, etc.

    Was ich bräuchte, ist eine Schritt-für-Schritt-Anleitung für Anfänger (sowohl auf dem Amiga, als auch in C).

    Viele Grüße

    Ingo