in Dokumente schreiben

Schnelle objektorientierte, kompilierende Programmiersprache.
Syntov
Beiträge: 68
Registriert: Mo Feb 09, 2009 4:45 pm

Re: in Dokumente schreiben

Beitrag von Syntov » Mi Feb 11, 2009 7:23 pm

Weist du was Zeiger sind?
Das * ist die "Einleitung/kenzeichnung" von Zeigern.
kleine Erklärung:
du rufst fopen mit den Argumenten <Dateiname><Öffnungsart> zurück bekommst du einen Zeiger, Addresse auf die Datei. so das du weist wo die Datei ist.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: in Dokumente schreiben

Beitrag von Xin » Mi Feb 11, 2009 10:13 pm

Empire hat geschrieben:plötzlich wird das * als nicht declariert gemeldet (<stdio.h> ist vorhanden).
Was für ein "*"??

Bitte Code posten! (und mit [ code] und [ /code] taggen!) und korrekt einrücken!
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: in Dokumente schreiben

Beitrag von Empire » Do Feb 12, 2009 2:14 pm

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

int pin, n;
char d;
int main ()
{
  printf ("Willkommen in deinem Tagebuch. Um sicherzustellen das Keiner deine einträge Liest gebe bitte dein Pin ein.\nPin:");
  scanf ("%d", &pin);
  if (pin == 1234)
  {
  printf ("Der Pin ist in ordnung.\nWelchen Tagebucheintrag wollen sie Bearbeiten?");
  scanf ("%d", &n);
  switch (n)
  {
      case 1: FILE *file = fopen("test1.odt", "r+"); break;
      case 2: FILE *file = fopen("test2.odt", "r+"); break;
      case 3: FILE *file = fopen("test3.odt", "r+"); break;
      case 4: FILE *file = fopen("test4.odt", "r+"); break;
      case 5: FILE *file = fopen("test5.odt", "r+"); break;
      case 6: FILE *file = fopen("test6.odt", "r+"); break;
      case 7: FILE *file = fopen("test7.odt", "r+"); break;
      case 8: FILE *file = fopen("test8.odt", "r+"); break;
      case 9: FILE *file = fopen("test9.odt", "r+"); break;
      case 10: FILE *file = fopen("test10.odt", "r+"); break;
      case 11: FILE *file = fopen("test11.odt", "r+"); break;
      case 12: FILE *file = fopen("test12.odt", "r+"); break;
      case 13: FILE *file = fopen("test13.odt", "r+"); break;
      case 14: FILE *file = fopen("test14.odt", "r+"); break;
      case 15: FILE *file = fopen("test15.odt", "r+"); break;
      case 16: FILE *file = fopen("test16.odt", "r+"); break;
      case 17: FILE *file = fopen("test17.odt", "r+"); break;
      case 18: FILE *file = fopen("test18.odt", "r+"); break;
      case 19: FILE *file = fopen("test19.odt", "r+"); break;
      case 20: FILE *file = fopen("test20.odt", "r+"); break;
      case 21: FILE *file = fopen("test21.odt", "r+"); break;
      case 22: FILE *file = fopen("test22.odt", "r+"); break;
  }
  fclose(file);




  }
  else
  {

  printf ("Der Pin wer Falsch. Sie haben keine Zugriffsrecht!");
  }
  return 0;

mfg
Empire

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: in Dokumente schreiben

Beitrag von cloidnerux » Do Feb 12, 2009 5:34 pm

Es ist unter C so, das du Datentypen am ANFANG jeder Funktion Deklarieren musst(so hab ichs jedenfalls gelernt).
Du Deklarierst aber dein File in dem Switch, also Fehler.
Dann solltest du globale Variablen vermeiden und deine ints und chars in die Mainfunktion holen
und statt dem Switch einfach die eingegebene Zahl in den Pfadstring einbauen und den Rückgabewert überprüfen,
das ist glaube ich besser als deine Methode.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: in Dokumente schreiben

Beitrag von Empire » Do Feb 12, 2009 5:45 pm

OK kapiert aber was ist ein Pfadstring?

mfg
Empire

Syntov
Beiträge: 68
Registriert: Mo Feb 09, 2009 4:45 pm

Re: in Dokumente schreiben

Beitrag von Syntov » Do Feb 12, 2009 5:50 pm

Empire hat geschrieben:OK kapiert aber was ist ein Pfadstring?
test1.odt
jetzt muss du den Pfadstring auserstellen:
Teilstring: "test"
variable: n
Teilstring: ".odt"
Wer nicht auf seine Weise denkt, denkt überhaupt nicht.

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: in Dokumente schreiben

Beitrag von Empire » Do Feb 12, 2009 5:59 pm

Und wie verwendet das was?

mfg
Empire

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: in Dokumente schreiben

Beitrag von cloidnerux » Do Feb 12, 2009 6:13 pm

Also momentan werden die Datein als text1.txt ... text20.txt
Statt in einem Case Abzufragen ob der Nutzer jezt Zahl X eingegeben hat,
baust du diese Zahl in den Dateinamen ein und in diesem wird der Pafd angegeben und das ganze ist ein String => Pfadstring
Du öffnest jezt Datei "text"+NUMMER DER DATEI GESPEICHERT ALS INT+".txt", so öffnest du die Datei ohen löstig die Zahl amnuelle inzugeben,
und wenn die Datei nicht vorhanden sit, gibt fopen einen bestimmten wert zurück.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: in Dokumente schreiben

Beitrag von Empire » Do Feb 12, 2009 6:16 pm

Kanste bitte beispiel machen?

mfg
Empire

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: in Dokumente schreiben

Beitrag von cloidnerux » Do Feb 12, 2009 6:28 pm

Bei dir, da legst du für jeden Eintrag? eine neue Datei an.
Diese Dateien unterscheiden sich nur in einer Nummer die Aufsteigt.
So, statt jezt diese Nummer beim Compilieren einzugeben, also

Code: Alles auswählen

File *file=fopen("text1.txt","r+");
Das ist scheiße, da du dadurch nicht erweiterungsfähig bist...
Stattdessen wandelst du den Eingegeben Integer in einen String(Aneinadereiung von Chars) um und gibts den im dateinamen an, also ungefähr so:

Code: Alles auswählen

File *file=fopen("text"+atoi(nummer)+".txt", "r+");
So kannst du fast unendlich neue Tagbucheinträge schaffen, ohne etwas in deinem Code zu ändern,
und ohne lange switch funktionen oder for's.....
Das ist einfacher und besser.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten