JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=fc0c08886681cbb2993f9622fde0e4a8Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Kann unter Linux via fstream keine Datei erstellen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 20:10    Titel: Kann unter Linux via fstream keine Datei erstellen Antworten mit Zitat

Ich bastele gerade zur Übung unter Linux ein paar Konsolenanwendungen.
Dazu verwende ich KDEvelop.
Die kompilierten Programme installiere ich dann gleich immer via "Erstellen/Installieren (als root)".

Ein ganz einfaches davon sieht so aus:

Code:

#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
  fstream datei("/tmp/text.txt");
 
  if(!datei)
  {
   cerr << "Datei konnte nicht erstellt/geoeffnet werden!\n";
   return 2;
  }
 
  datei << "blubberblabli";
   
  datei.close();

  return EXIT_SUCCESS;
}




Das Problem, egal welchen Pfad ich auch für die Datei einsetze (eigenes home-Verzeichnis z.B.), sie kann nicht erstellt werden. D.h. es wird jedes mal die eingebaute Fehlermeldung ausgegeben.

Hab's auch mal als Root versucht... geht scheinbar auch nicht. Rolling Eyes

Was mache ich falsch? Confused
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 20:19    Titel: Antworten mit Zitat

Etwas am Rande:
return EXIT_SUCCESS;

Wer kam eigentlich auf diesen Mist?

return 0; only!

Fehler
CPP:
fstream datei("/tmp/text.txt");


So würde ich auch keine Datei erstellen können! wenn schon:

CPP:
::std::basic_fstream<char> datei("/tmp/text.txt", ::std::ios::out);

_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 20:44    Titel: Antworten mit Zitat

Zu EXIT_SUCCESS:
Beim Erstellen einer ("Hello-World") Konsolen-Awendung wird folgender Code bei KDEvelop vorgegeben:
CPP:
/*
  ...
*/


#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
  cout << "Hello, world!" << endl;

  return EXIT_SUCCESS;
}


Da hab' ich das auch gleich beibehalten, da ich davon ausgehe, das es so korrekt sein sollte. Oder ist das ein altes C-Relikt, das nicht mehr üblich ist?

Danke, auf die Art funzt es, unter Windows (Borland-C++B5) lief's auch ohne 2. Parameter, weshalb ich's hier genauso gemacht hab. Kompilieren ließ es sich ja auch problemlos. Rolling Eyes

MfG
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 20:46    Titel: Antworten mit Zitat

Das ist kein überbleibsel, das ist eine Schnappsidee von Linus gewesen.

noch ein Tipp:
lass das using namespace std; weg. und greife direkt drauf zu, using ist nix
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 21:08    Titel: Antworten mit Zitat

Die genau Bedeutung, bis auf das, dass ich die Dateierweiterungen bei den Header-Dateien weglassen kann, habe ich eigentlich leider von "using namespace std;" nie erfahren.

Wo liegen die Vor-/Nachteile?
Bin auch für Verweise dankbar, da man leider nur sehr schwer (ich bisher noch gar nicht) mit diesem Begriff mit Suchmaschinen was im Netz findet, d. h i. d. R. nur Quell-Texte, die dies enthalten. Confused
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 21:13    Titel: Antworten mit Zitat

Die Dinger ohne Endung sind was ganz anderes als die mit ".h".
Die ohne .h enthalten einen Namespace names std (daher das using namespace), und bauen größtenteils auf templates auf... Du kannst stattdessen eben auch vor jedes cout, usw. std:: schreiben... Die meisten meinen, das sei besser, weil es noch viele weitere std-Dateien gibt, wenn man die mit using nimmt, kommt schnell mal zu Namenskonflikten.
Patrick (und viele andere) meinen, die sind besser, denn die mit ".h" sind vom Standard geächtet...
Gruß

FH
<edit>
patrick könnte dir jetzt min, 20 Links und 200 Argumente anbieten... Also frag ihn, wenn du was ganz genau wissen willst.
</edit>
_________________
goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 21:29    Titel: Antworten mit Zitat

FH
Joah so in etwa könnte ich das machen, wie Du es in Deinem edit beschrieben hast Laughing Aber ich geh jetzt erstmal schlafen Rolling Eyes
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 08.04.2005, 21:41    Titel: Antworten mit Zitat

Danke für die Auskünfte, ja über Verweise, vor allem wo das bestenfalls bis ins letzte Detail für den darüber völlig Unwissenden wie mich erklärt wird, wäre ich sehr dankbar.

Muss aber heute nicht mehr sein, geh nämlich auch langsam etwas schlafen. Wink
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 08:09    Titel: Antworten mit Zitat

Selber Schnapsidee.
Wenn du mich schon zulaberst von wegen Standarts, dann solltest du auch einsehen das mit KDEV EXIT_SUCCESS eben Standart is.

Zum Rest sag ich lieber nix, sonst gibts wieder nen Flamewar.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 08:18    Titel: Antworten mit Zitat

<klugscheiß>
es heißt übrigends standard
</klugscheiß>
aber ich denke, dass Patrick recht hat. man sollte sich nicht auf standards von irgendwelchen entwicklungs umgebungen festlegen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 08:26    Titel: Antworten mit Zitat

http://www.zfx.info/FAQ.php?ID=33
Razz
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 08:39    Titel: Antworten mit Zitat

Nahar hat Folgendes geschrieben:
Wenn du mich schon zulaberst von wegen Standarts, dann solltest du auch einsehen das mit KDEV EXIT_SUCCESS eben Standart is.


Weils unter Linux geschehen ist? Komm hör mir auf und schnapp Dir mal den Standard und such mal nach EXIT_SUCCESS! Das ist eines der ältesten überbleibsel von Linus was sich durchgesetzt hat in der LinuxCommunity. Und Linus sowie seine Erschaffung oder sogar UNIX gehören nicht zum Standard.

Fazit: EXIT_SUCCESS gehört nicht zum C99 Standard. Also plapper mal keine Mist nach den Du irgendwo von einem "ProLinux-Hippi" aufgeschnappt hast. Denn die brauchen sich erst gar nicht mal über Standard aufzuregen, das sieht man ja schon am Linux-Kernel wie verkorkst der ist, da man sich selten an Standards hält.

Und heute Nachmittag poste ich dazu mal was ausführlicher.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Nahar
Senior JLI'ler


Alter: 36
Anmeldedatum: 16.07.2003
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 09:52    Titel: Antworten mit Zitat

[OT]
oh, pardon, ich vergas das Patrick immer alles besser kann.
Natürlich ist dein Programmierstil tausenmal besser als der von Linus, und hättest du n Betriebssystem erschaffen, dann wäre das jetzt so eine Art globale Regierung, würde immer dne besten Börsenkurs finden, und dabei dem Benutzer virtuell die Nägel feilen. Aber da Linux ja nur n mittelmässig verbreiteteten Kernel entwickelt hat, soll der doch bitte auf die Knie gehn wenn Sir Patrick den Raum betritt.

=> Fresse, Junge.
[/OT]

Wenn du es so siehst kannst du jede def auch mit nem numerischen Wert ersetzen.
Muss man aber nicht. Ich für meinen Teil machs sogar ziemlich gern, aber deswegen TUT ES NIEMAND WEH WENN MAN NE DEFINITION FÜR SOWAS BENUTZT.

Achja, und bezüglich kompatiblität: Deine WinAPi macht deutlich mehr Aufwand als n kleines

#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 0
#endif

und damit ist der Code immer kompillierbar, und man versteht sogar was return 0 eigentlich heisst.

Aber OK, bessere Leute brauchen sowas ja net.


Und noch mal kurz was persönliches:
Ich glaub dir dass, was du grad durchmachst net leicht ist. Menschlich tust du mir auch Leid. Faktisch musst du deswegen aber net jedem hier und im allgemeinen ans Bein pinkeln.
Verstanden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 10:13    Titel: Antworten mit Zitat

Nahar, wo liegt das Problem?

EXIT_SUCCESS ist echt keine gute Rückgabemethode, da kann man genauso 0 nehmen Wink

Wenn dann würde ich mir was besseres schreiben.
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 09.04.2005, 10:17    Titel: Antworten mit Zitat

Nahar
Sorry, aber mehr zu lachen hatte ich lange nicht mehr Laughing

Wie hat noch mal jemand gesagt? "Wenn die objektive Argumente ausgehen wird man ausfallend" (bezogen auf: Fresse Junge).

Deinen Sarkasmus in Ehren, aber ich glaube daran solltest Du noch etwas arbeiten, er ist mir zu primitv (bedetuet für Dich: Nivaulos).

Einer hat hier ein gutes Zitat von Dieter Nuhr in der Signatur, weiß nicht mehr wer, aber es lautet: "Wenn man keine Ahnung hat, Fresse halten". Solltest Du Dir nahelegen bevor Du Dich mit Genuß weiterblamierst.

BlackLordOfDragons
Erfasst. #define ist sowieso für Konstaten schlechter und sinnloser Style.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum