"Leichte" Aufgabe in C



  • #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main(void){
        FILE *f;
        int lauf, wahl;
        while (lauf){
              system("cls");
              printf("Auswahlmenü\n");
              printf("===========\n");
              printf("1. Text eingeben\n");
              printf("2. Datei lesen\n");
              printf("3. Datei löschen\n");
              printf("0. ENDE\n\n");
              printf("Deine Wahl: ");
              scanf("%d",&wahl);
              getchar();
    switch (wahl){
        case 1 : {    
        // Datei öffnen/anlegen
        f = fopen("test.txt", "a"); // Datei-Handle öffnen
        char zeile[80];
        printf("Bitte Text eingeben: ");
        fgets(zeile, 80, stdin);// eine Zeile von stdin holen
        fprintf(f, "%s", zeile);// eine Zeile in Datei schreiben
        fclose(f); // Datei-Handle schließen
    
    case 2 : {
        //Datei auslesen
    f = fopen("test.txt", "r");// Datei-Handle öffnen
    if (f == NULL){
    printf("+++ FEHLER +++\nDatei konnte nicht geöffnet werden!\n\n");
    }else{
    char daten[80];
    system("cls");
    while (fgets(daten, 80, f) != 0){// eine Zeile von stdin holen bis ENDE
          printf("%s", daten);// Zeile ausgeben
          }
          printf("=== Ende Ausgabe ===\n\n");
    fclose(f);// Datei-Handle schließen
    }
    break;
    }
    case 3 : {
          // Datei löschen
          int perr = remove("test.txt");
          if ( perr != 0){
             printf("Es ist ein Fehler beim Löschen aufgetreten (ERROR = %d)\n",perr);
         }
         break;
         }
    case 0 : { exit(0);}
         }
         printf("nochmal? (1/0): ");
         scanf("%d",&lauf);
         }
         return 0;
         }
         }
    


  • Schon besser. Was jetzt noch fehlt, ist eine genaue Beschreibung, was nicht funktioniert, welche Fehler eventuell auftreten usw.

    EDIT: Um bring bitte mal deine Einrückung in Ordnung! Das kann/will so kein Schwein lesen. Wenn ich nicht mal innerhalb von 2-3 Sekunden die schließende geschweifte Klammer zu einer while-Schleife entdecken kann, dann läuft irgendwas schief...



  • Hallo ich hab hier noch son Programm rum fliegen was ich irgendwan mal mit dem Borland Builder gemacht habe vielleicht Hilft dir das ja weiter...

    #include <iostream>
    using namespace std;
    
    #include <fstream>
    #include <vcl.h>
    
    #include "Unit1.h"
    
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Memo2->ScrollBars = ssBoth;
    
    FileListBox1->Directory = "//Datenbank";
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    FileListBox1->Directory = "//Datenbank";        
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::kunden_anlegenClick(TObject *Sender)
    {
    
    String kunden_name;
    String neuer_name;
    
    neuer_name = Memo2->Text;
    
    kunden_name = Edit4->Text;
    
    ofstream neuer_kunde (kunden_name.c_str()  );
             neuer_kunde << neuer_name;
    
    neuer_kunde.close();
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    String kunden_name;
    String neuer_name;
    
    String kunden_name_anlegen;
    
    bool datei_pruefeung;
    
    kunden_name_anlegen = Edit4->Text;
    datei_pruefeung = FileExists (kunden_name_anlegen);
    
            if (datei_pruefeung==true)
            {
             MessageBox(0,"Datei existiert bereits, um einen bereits bestehenden Kunden"
             "zu ändern benutzen sie den ''Kunden bearbeiten'' Button."   "","Fehler !!",0);
            }
    
            if (Edit4->Text == "")
           {
               MessageBox(0,"Wenn sie einen neuen Kunden anlegen wollen,"
               "müssen sie in das Feld ''Kunden Name eingeben'' einen "
               "beliebigen Kunde Namen eingeben."" ","Fehler !!",0);
    
           }
    
       else if (datei_pruefeung==false )
       {
         neuer_name = Memo2->Text;
         kunden_name = Edit4->Text;
    
         ofstream neuer_kunde (kunden_name.c_str() );
    
              neuer_kunde << neuer_name;
              neuer_kunde.close();
    
              MessageBox(0,"Neuer Kunde wurde angelegt","Kunden anlegen",0);
              FileListBox1->Directory = "//Datenbank";  //datenbank aktualisieren
    
         }
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    int falsche_eingabe;
    
    int anderung;
    String kunde;
    String kunden_aenderung;
    
            if (Edit4->Text=="")
            {
              MessageBox ( NULL, "Das Feld ''Neuer Kunden Name'' muss ausgefüllt werden", "Hinweis !",0);
            }
    
    else
    {
    
    anderung = MessageBox ( NULL, "Veränderungen wirklich übernehmen ?", "Warnung !",4);
    
              if (anderung == IDYES)
              {
                      String kunden_name;
                      String neuer_name;
    
                       neuer_name = Memo2->Text;
                       kunden_name = Edit4->Text;
    
                       ofstream neuer_kunde (kunden_name.c_str()  );
                       neuer_kunde << neuer_name;
    
                        neuer_kunde.close();
                        MessageBox ( NULL, "Veränderungen wurde übernommen", "Veränderungen wurde übernommen",0);
                        FileListBox1->Directory = "//Datenbank";  //datenbank aktualisieren
              }
    
              if (anderung == IDNO)
              {
                MessageBox ( NULL, "Veränderungen wurden verworfen", "Veränderung verworfen",0);
              }
    }
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FileListBox1Change(TObject *Sender)
    {
    String datei;
    
            if ( FileListBox1->ItemIndex > -1 )
            {
                    Edit4->Text = FileListBox1->Items->Strings[FileListBox1->ItemIndex] ;
                    datei = Edit4->Text;
    
                    Memo2->Lines->LoadFromFile(datei.c_str() );
    
            }
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    bool datei_pruefung;
    int loesch_abfrage;
    
    String zu_loeschende_datei;
    
    zu_loeschende_datei = Edit4->Text;
    
    datei_pruefung = FileExists (zu_loeschende_datei);
    
            if (datei_pruefung==true)
            {
                loesch_abfrage = MessageBox(NULL,"Wollen sie die Datei wirklich löschen ?","Warnung !",4);
            }
    
            if (loesch_abfrage==IDYES)
            {
               remove(zu_loeschende_datei.c_str() );
               MessageBox(0,"Kunde wurde erfolgreich aus der Datenbank entfernt !","Hinweis !",0);
               FileListBox1->Directory = "//Datenbank";  //datenbank aktualisieren
            }
    
            else
            {
            MessageBox(0,"Lösch Aktion wurde abgebrochen !","Hinweis !",0);
            }
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Memo2Change(TObject *Sender)
    {
    
    }
    //---------------------------------------------------------------------------
    


  • void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    FileListBox1->Directory = "//Datenbank";
    }

    Der Teil muss noch raus weil sonst kann man die Kunden Datein nicht aus der Liste auswählen.



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum C# und .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ok hier das was ich noch einbauen müsste:

    - Größe der Datei ermitteln anhand der Zeichen
    - am Ende der Datei letzte Öffnung angeben
    - Funktion zur Umbenennung der Datei

    Grüße



  • Ok hab eine sach gelöst muss nur noch das machen:
    - Größe der Datei ermitteln anhand der Zeichen
    - am Ende der Datei letzte Öffnung angeben



  • Bisschen bemühen und die Dateigrößenermittlung ist gleich runtergeschrieben 😉

    Tipp: bei IBM-PC: 1 Zeichen = 8 Bit = 1 Byte = 1 Oktett (aus Wikipedia "Byte")

    Dann z.B. per while(datei.getline(str) != eof) { größe += str.length(); } die Länge jeder Zeile addieren. Zum Schluss kommt deine Größe in Byte raus, da ein Byte ein Zeichen enthält 😉



  • rolf höre nicht auf diesen troll



  • Dateigröße: man: fseek
    Zugriffsdatum: man: stat(2)


Anmelden zum Antworten