Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: FAQ - C (C89, C99 und C11) ::  Dateien öffnen und schreiben     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
heinrich
Unregistrierter




Beitrag heinrich Unregistrierter 19:57:00 01.06.2001   Titel:   Dateien öffnen und schreiben            Zitieren

Beispiel:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
char eingabe;
int versuch = 0;
 
printf("Eingabe : ");
scanf("%c" , &eingabe);
getchar();
 
switch (eingabe)
 {
  case 'a':
  clrscr();
  break;
 
  default:
  while (eingabe != 'a')
  {
   printf("Eingabe : ");
   scanf("%c" , &eingabe);
   getchar();
   versuch++;
  }
 
}


Nun möchte ich den Wert von der Variablen versuch eine eine extra angelegte Datei schreiben. Wie kann ich das nun machen ? Muss ich dazu noch anderer header Dateien eineinbinden oder reicht die STDIO ? Und wo muss der Programmtext dafür stehen ? Direkt dadrunter ?

Vielen Dank schon mal an die, welche sich damit beschäftigen werden.

Bis denn !

[ 03.07.2001: Beitrag editiert von: class CMarcus ]

[ 09.07.2001: Beitrag editiert von: class CMarcus ]
Werbeunterbrechung
Shade Of Mine
Moderator

Benutzerprofil
Anmeldungsdatum: 04.05.2001
Beiträge: 20097
Beitrag Shade Of Mine Moderator 20:24:00 01.06.2001   Titel:              Zitieren

stdio.h reicht

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
FILE* datei1;
datei=fopen("datei.txt","r+");
/* alternativ zu r+
r - nur zum lesen
w - nur zum schreiben
r+, w+ - zum schreiben UND lesen (ueberschreiben der datei)
a - schreiben, aber anhaengen an die datei
a+ - schreiben und lesen, an die datei wird angehaengt*/

 
if(datei==NULL)
//fehler beim oeffnen
return -1;
 
fseek(datei,0,SEEK_END);
/*fseek veraendert die position in der datei...
SEEK_END heisst ans ende der datei, SEEK_SET ist der anfang und SEEK_CUR ist die aktuelle position...
0 ist der wert um den die position geaendert wird (in unserem fall 0, da wir ja das datei einde wollen)
*/

 
fprintf(datei,"Hallo Datei");
//wie printf() zu handhaben!
 
//alternativ zu fprintf gibt es noch fputs()
 
fscanf(datei,"%s",&string);
//wie scanf()
 
//alternativ dazu gibt es gets
 
fclose(datei);
//wichtig: FILE* muss wieder geschlossen werden


halbwegs verstaendlich ausgedrueckt ??

[ 09.07.2001: Beitrag editiert von: class CMarcus ]
Shade Of Mine
Moderator

Benutzerprofil
Anmeldungsdatum: 04.05.2001
Beiträge: 20097
Beitrag Shade Of Mine Moderator 10:45:00 26.06.2001   Titel:              Zitieren

Weitere interessante Sachen wären dann:

fgets() und fputs()
fgets() liest entweder bis zum \n oder bis zur maximalen Anzahl Zeichen... das '\n' wird mitgelesen...

fputs ist analog dafür da in die Datei zu schreiben...

Eine Datei bis zum Ende auslesen geht entweder in dem man mit fgetc arbeitet und EOF abfängt

C++:
while( (c=fgetc(datei)) != EOF)

(allerdings muss c dann vom typ int sein, denn EOF ist kein char-wert)

oder mittels der Funktion feof
C++:
while(!feof(datei))


mittels rename() kann man eine Datei umbennen und mittels remove() löschen...

Nachtrag zu fopen: man kann auch die Oeffnungsart angeben:

C++:
fopen("deine.datei","wb")


b steht für Binary und muss explizit angegeben werden...
wenn man nichts schreibt, also zB nur "w", dann bedeutet dies 'Textmodus'
in binären Dateien werden '\n' nicht in einen Zeilenumbruch gewandelt sondern stehen als das drinnen, als das das aktuelle OS es repraesentiert.
unter windows zB \r\n
unter MAC zB \r
nur unter Unix bleibts gleich, da ein Zeilenumbruch durch \n gekennzeichnet ist.

Binäre Dateien braucht man vor allem in Zusammenhang mit structs:

Mittels fread und fwrite ist es möglich structs zu speichern und laden... z.B.

C++:
s S;
if(fwrite(&S,sizeof(s),3,dat)==3)


fwrite liefert Anzahl der fehlerfrei geschriebenen structs

C++:
fseek(dat,sizeof(s)*3,SEEK_SET);
if(fread(&S,sizeof(s),1,dat)==1)


Mittels fseek springe ich vor die 4te struct und lese dann eine struct in S ein... fread liefert die Anzahl der fehlerfrei gelesen structs zurück.


Zuletzt bearbeitet von Shade Of Mine am 22:09:50 11.12.2003, insgesamt 1-mal bearbeitet
C++ Forum :: FAQ - C (C89, C99 und C11) ::  Dateien öffnen und schreiben   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.