"Leichte" Aufgabe in C
-
Hallo an alle Forumteilnehmer.
Ich stehe vor einem, zumindest für mich, schweren Problem .
Ich habe in der Schule gerade C in Informatik und muss als Hausaufgabe einen Dateimanager erstellen. Leider war ich bis heute wegen einer schweren Erkältung außer Gefecht gesetzt und mir fehlt jetzt einfach die Zeit um den Stoff vor dem Wochenende nachzuholen.Ich denke für die meisten von euch sollte die Aufgabenstellung keine Probleme darstellen, da wir noch nicht weit gekommen sind.
Also folgende Funktionen sollen ausführbar sein:
-Eingabeaufforderung für Dateinamen
-Umsetzung des eingegebenen Dateinamens in eine programmlesbare Form
-Angegebene Datei öffnen oder "Datei nicht gefunden" als Fehlermeldung
-Wenn Datei gefunden wurde, öffnen und auf Bildschirm ausgeben
-Die Größe der Datei anhand der Anzahl der Zeichen in der Datei ermitteln und anzeigen
-Am Ende der Datei letzte Öffnung eintragen (Datum, uhrzeit)
-Funktion zum umbenennen der Datei
-Funktion zum Löschen der DateiEs wäre echt großartig wenn sich jemand finden würde der das in einer freien Minute erstellt. Weiß sonst nicht, wie ich bis morgen keine schlechte Note kassieren kann.
Grüße
-
Du hast nen Schuss...
a) falsches Forum (hier: C#)
b) keinerlei Eigeninitiative das Problem zu lösen.
-
C#/.net != C
In meiner Schulzeit wurden solche Probleme wie folgt gelöst:
Irgendwen aus der Klasse anrufen und vorbeikommen lassen, selber versuchen das zu lösen während der Kollege einem ein wenig Anleitung und Tipps gibt.
Wenn das ganze fertig ist ne Runde zocken sowie dem Kollegen nen Kasten Bier überreichen.
-
Ich erstell das in ner freien Minute allerdings musst du das dann vorher ins Projekte-Forum verschieben lassen und mir dann 50€ geben
Also echt.. wenn du echt ne Weile krank warst, dann sag das deinem Lehrer und bitte um ein wenig extra Zeit. Wenn nicht, haste es selbst versaubeutelt und die Note 6 verdient. So, ganz einfach.
-
jaja wisst ihr ob ich Eigeninitiative aufbringe oder nicht??
Ich sitze hier seit geschlagenen 4 Stunden am Stück und versuche das zu kapieren. Und jemanden mal schnell zu sich in ein Dorf einladen, wo es nichtmal DSL gibt, ist auch nicht so einfach.
Aber ok. Dann sorry das ich gefragt hab.
-
jaja wisst ihr ob ich Eigeninitiative aufbringe oder nicht??
Es ist anzunehmen da
a) Du Dir nicht mal die Zeit genommen hast das richtige Forum aufzusuchen
b) Du keinerlei Ansatz oder Versuch gepostet hast
c) keinerlei konkrete Fragen gestellt hast.
-
Stealthy schrieb:
jaja wisst ihr ob ich Eigeninitiative aufbringe oder nicht??
Ich sitze hier seit geschlagenen 4 Stunden am Stück und versuche das zu kapieren. Und jemanden mal schnell zu sich in ein Dorf einladen, wo es nichtmal DSL gibt, ist auch nicht so einfach.
Aber ok. Dann sorry das ich gefragt hab.Ok, kein Thema. Dann poste bitte mal, was du in den letzten 4 Stunden so zusammengeschrieben hat.
-
#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 DateiGrüß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)