Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » open() close() c++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.11.2010, 17:08 Uhr
~zarabina
Gast


Hallo alle zusammen,

Ich habe folgende angabe und muss dieses Programm lösen. Was ich auch gemacht habe, aber es nicht ganz richtig ist, und ich auch im internet mit suchen nicht weiterkomme.

angabe:
Das Alphabet soll nun nicht mehr auf der Konsole ausgegeben werden, sondern in eine neue, durch das
Programm selbst anzulegende Datei geschrieben werden, deren Name dem Programm als Aufrufparameter
¨ubergeben wird. Beispiel f¨ur einen Aufruf: progname newfile.txt. Verwenden Sie zum Anlegen der
Datei die Systemfunktion open(). Sie liefert als R¨uckgabewert einen Filedeskriptor, den Sie beim Schreiben
mittels write() benutzen k¨onnen. Achten Sie jetzt auch auf eine sinnvolle Fehlerbehandlung, und
pr¨ufen Sie zu Beginn, ob tats¨achlich ein Argument ¨ubergeben wurde. Falls nicht, lassen Sie eine entsprechende
Meldung (auf der Konsole) ausgeben.

Mein Prgoramm:

C++:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#include  <unistd.h>


int main(){
  int length;
  char puffer[100];


  open("text.txt",O_RDWR|O_CREAT);
  "text.txt" < write(length,"BJHSDCGJDSBFSJDFV",sizeof(puffer));
  
}


bei diesem programm wird dann nur das abc... am bildschirm angezeigt und noch so komische zeichen...

Ich brauch eure hilfe, bittee


Bearbeitung:
cpp-Tags eingefügt

Dieser Post wurde am 05.11.2010 um 20:23 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.11.2010, 21:04 Uhr
Hans
Library Walker
(Operator)


Hi,

also in der Aufgabe steht, dass das Alphabet in eine Datei ausgegeben werden soll, deren Name dem Programm beim Aufruf übergeben wird. D.h. Dein Programm soll in der Lage sein, Parameter zu übernehmen. Das fehlt jedoch bei Dir, denn die main-funktion muss dafür so aussehen:

C++:
int main(int argc, char *argv[])


Die Variablen argc und argv sind dann auszuwerten. Für das Beispiel aus der Aufgabe müsste Dein Programm dann eine Datei mit dem Namen "newfile.txt" erstellen, aber keine "text.txt", wie es in Deinem Code steht.
Dann steht in der Aufgabe:

Zitat:
Verwenden Sie zum Anlegen der Datei die Systemfunktion open(). Sie liefert als R¨uckgabewert einen Filedeskriptor, den Sie beim Schreiben mittels write() benutzen k¨onnen.


Diesen Rückgabewert lässt Du jedoch unberücksichtigt, d.h. verfallen. Diesen Filedeskriptor, den Du von open geliefert bekommst, brauchst Du jedoch unbedingt, um mit der Datei überhaupt irgendwas machen zu können. D.h. Du musst ihn in eine Variable übernehmen. Wenn Du das nicht tust, dann wird die Datei zwar sehr wahrscheinlich geöffnet, aber Du hast trotzdem keinen Zugriff darauf. Und ob das öffnen überhaupt klappte, oder vielleicht doch nicht, das erfährst Du auch nicht. Denn wenn es nicht klappte, liefert open einen bestimmten Wert zurück; die Überprüfung, ob man diesen Wert zurück bekommen hat, nennt sich Fehlerbehandlung.

Dann wäre da noch diese Zeile:

C++:
"text.txt" < write(length,"BJHSDCGJDSBFSJDFV",sizeof(puffer));


Die müsstest Du mir bitte mal erklären. Mein Compiler frisst die zwar, allerdings ergibt das bei mir keine Ausgabe.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: