Datenbank mit C



  • Du hast

    float kontostand;
    int kontonummer;
    

    machst dann aber

    scanf("%s",&kontonummer);
    fprintf (datei, " ,%s ",&kontonummer);
    ...
    scanf("%s",&kontostand);
    fprintf (datei, " ,%s ",&kontostand);
    

    Informier dich mal darüber was %s bei scanf bedeutet.
    Informier dich mal darüber was %s bei fprintf bedeutet.
    ⚠ Das ist nicht das Selbe, das ist nur ähnlich.

    Eine Kontonummer ist kein int, auch wenn sie aus Ziffern besteht.

    Da du auch nur eine Variable für einen Vornamen hast, kannst du auch schlecht mehr Datensätze halten.



  • Wutz schrieb:

    Derselbe Müll wie zuvor,
    - globale Variablen
    - Nichtverwendung der Struktur
    - "%s" bei fscanf liefert Fehler bei Whitespaces
    - keine Auswertung der Rückgabewerte aus fscanf
    - allgemein bekannte Pfusch-Quelle allen Übels: "http://pronix.linuxdelta.de..."

    Hab doch die globalen Variablen zu lokalen gemacht?! Der Rest muss doch global bleiben, da ich die in mehreren Funktionen brauche oder nicht?

    Pfusch-quelle? kannte die Seite nicht, klang aber ganz OK was da stand. Vllt bessere Quellen für Tutorials oder der gleichen?!
    Mfg



  • eyk107 schrieb:

    Hab doch die globalen Variablen zu lokalen gemacht?! Der Rest muss doch global bleiben, da ich die in mehreren Funktionen brauche oder nicht?

    Wenn man nur Funktionen hat, die nur void als Argument haben, dann schon.

    Das ist aber nicht der Sinn von Funktionen und sehr sehr sehr schlechter Programierstil.
    Unwartbar und katastrophal. Das erinnert an C-64 Basic.

    Funktionen können Parameter und Rückgabewerte haben.
    So wie bei fopen oder localtime.

    Das ist auch der eigentliche Grund warum es Funktionen gibt. Sonst hätte man bei Subroutines bleiben können.



  • eyk107 schrieb:

    Pfusch-quelle? kannte die Seite nicht, klang aber ganz OK was da stand. Vllt bessere Quellen für Tutorials oder der gleichen?!
    Mfg

    Na ja, wo das hinführt, kann man bei dir sehen.
    Du möchtest die Datei öffnen und stellst fest es klappt nicht.
    Du meldest das auch, du machst dann aber weiter im Programm und versuchst munter aus der Datei zu lesen.



  • DirkB schrieb:

    eyk107 schrieb:

    Pfusch-quelle? kannte die Seite nicht, klang aber ganz OK was da stand. Vllt bessere Quellen für Tutorials oder der gleichen?!
    Mfg

    Na ja, wo das hinführt, kann man bei dir sehen.
    Du möchtest die Datei öffnen und stellst fest es klappt nicht.
    Du meldest das auch, du machst dann aber weiter im Programm und versuchst munter aus der Datei zu lesen.

    Ja ich mein iat ja vollkommen richtig aber hilft mir leider nicht sehr weiter. Es wäre dezent hilfreicher zu sagen wo der fehler ist, oder zu sagen wie es besser geht. Oder auch ein Link oder Beispiel würde mir schon reichen.
    Danke schonmal
    mfg
    Eric



  • eyk107 schrieb:

    Es wäre dezent hilfreicher zu sagen wo der fehler ist, oder zu sagen wie es besser geht.

    Das wurde alles schon geschrieben.

    Deine Programmablauf mit den gotos ist merkwürdig.
    Dein Verständnis von Funktionen ist merkwürdig.
    Deine Eingaben mit scanf sind falsch.
    Deine Ausgaben mit printf sind falsch.

    Lass das überflüssige mit Sound und Farbe erstmal sein und konzentriere dich auf das Wesentliche.

    Du brauchst ein gutes Buch über C, das du auch durcharbeiten musst.
    Ich kenne kein gutes Buch, da ich in letzter Zeit keins brauchte.
    Aber es gibt genug Threads hier im Forum.



  • Dirk hat es doch schon beschrieben.
    Hier ein Ausschnitt:

    void ausgabe (void)
    {
       printf("\n\t KUNDENDATENAUSGABE: \n\n");
       datei=fopen("Kundendaten.csv","r");
       if(NULL == datei) 
          {
             printf("Konnte Datei \"Kundendaten.csv\" nicht oeffnen!\n");
          }
       else   // ein Ansatz - es gibt Alternativen
       {
          for (f=1; f<=j; f++)   // globale Variable zu lokale ändern, schon vorgeschlagen
          {
             fscanf (datei, " ,%s ",vorname);
             printf ("%s",vorname);
             fscanf (datei, " ,%s ",name);
             printf ("%s",name);
             fscanf (datei, " ,%s ",&kontonummer);  // wurde schon vorgeschlagen
             printf ("%s",&kontonummer);  // wurde schon vorgeschlagen
             fscanf (datei, " ,%s ",&kontostand);  // wurde schon vorgeschlagen
             printf("%s",&kontostand);  // wurde schon vorgeschlagen
          }
          fclose (datei);
       }
       return;  // ungewöhnlich - warum?  
    }
    

    Warum gehst du die Sache nicht einfach an?
    Habt ihr denn kein Skript oder ein brauchbares Buch?

    Wenn es dir hilft, lass diesen optischen oder akustischen Schnickschnack erst mal weg. Hab es nicht getestet - stört wahrscheinlich nicht die Funktion.

    Die Lösung jetzt hier aus dem Stand gibt es nicht. Zeig das du das Geschriebene umsetzt.

    Im Netz gibt es hunderte von Beiträgen zu ähnlichen Aufgaben. Okay, nicht alle Ansätze sollte man da weiterverfolgen. 🙄



  • Schonaml drüber nachgedacht warum das Fließkommazahl und nicht nur Kommazahl heißt? Würdest Geld in Cent auch in ein float speichern? Weisst du überhaupt was der float Datentyp ist?

    Denk darüber nochmal nach.



  • Ich hoffe nicht das ein Finanzfachmann mit der Software arbeiten soll.
    Also würde ich das mit dem Fliesskomma erst mal als nachrangig ansehen.

    Natürlich können wir hier die Idealvorstellung eines perfekten Quelltextes haben, aber ist ein Programmieranfänger mit dem Ideal nicht überfordert? Gibt es das Ideal überhaupt? Wenn ja, warum dann die neuen Konferenzen zum kommenden C-Standard?

    Zum C-Standard und dem Quelltext zurück:

    void main (void)
    

    war nie Teil des C-Standard.

    int main (void)
    

    ist vom Standard da okay.



  • Das ist der neue Void-C Standard von 2020. Kurz VC-20
    Nur noch globale Variablen.

    Ach Mist, das ist dann ja das Basic V2.0



  • Da Microsoft ja an der
    void - Variante festhält, ist ja für die Zukunft nichts auszuschliessen. 🙄

    Aber bis zum nächsten C-Standard haben wir ja noch Zeit 👍

    Und was immer da kommt, unser erste Bundeskanzler sagte:
    "Was kümmert mich mein Geschwätz von gestern." 😃



  • Da schließt sich dann der Kreis. Das Basic V2.0 ist auch von Microsoft 😃



  • Ich glaube ich werde mich erstmal durch das Forum hangeln. Hatte die Suche ja auch schon benutzt aber leider nichts wirklich brauchbares gefunden.

    Der große Knackpunkt ist:
    Die Aufgabe vom Prof ist, eine Datenbank für eine Bank zu erstellen wobei alle Leute aus dem Semester die gleiche Aufgabe haben. Jeder soll sich nur Gedanken machen wie er sich von der Masse absetzen kann. (Deshalb Farblicher Schnick Schnack und Musik). Da Diese Zusatzfunktionen funktionieren und die Ein- und Ausgabe nicht beeinflussen, habe ich diese dringelassen.
    Desweiteren steht in der Aufgabenstellung: Da nicht alle nötigen Befehle/ Funktionen in einem Semester behandelt wurden, ist es sehr zu empfehlen bei etwaigen Problemen alle möglichen Informationsquellen zu durchsuchen. Deswegen dachte ich mir ich frage einfach mal hier nach.
    Funktionen wie goto scanf und printf standen so im script deswegen dachte ich, kann ich das einfach übernehmen.
    Aber trotzdem Danke für eure Hilfe
    mfg
    eric



  • Du solltest in die Schulbibliothek gehen und dir ein Buch über C ausleihen.

    Du kannst gerne nach allen möglichen Funktionen im Internet suchen.
    Nur wenn du nicht weisst, wie du sie anwenden musst, bringt das gar nichts.

    scanf und printf sind schon in Ordnung, nur musst du die auch richtig verwenden.
    Die verschiedenen Formatspecifier haben schon ihren Sinn und die Funktionen sind auch unterschiedlich in ihrem Aufruf.

    goto dagegen ist böse. Einige sind strikt dagegen, andere tolerieren es eher, aber
    es gibt i.A ganz wenige Probleme in denen goto toleriert wird.
    Es versaut die Programmstruktur. Keiner kann mehr richtig nachvollziehen wo der Programmfluß lang geht.


Anmelden zum Antworten