Zum Inhalt springen

paka

Mitglieder
  • Gesamte Inhalte

    66
  • Benutzer seit

  • Letzter Besuch

Beiträge von paka

  1. Auch zu demselben Zeitpunkt, zu dem in deinem Programm das Problem auftritt, d.h. während dein Programm läuft?

    Gegebenenfalls musst du dein Programm, z.B. mit einer MessageBox, anhalten, um genug Zeit zu haben, das zum richtigen Zeitpunkt zu testen.

    Ich hab das mal getetet, und hier scheint wirklich das Problem zu liegen.

    Zum Zeiltpunkt, wenn ich den Ordner lösche, wird im Explorer noch eine Datei angezeigt.

    Diese ist (bzw soll ) aber schon in einer anderen Funktion gelöscht worden sein.

    Dabei wird auch kein Fehler gemeldet, (das frag ich direkt nach dem Aufruf von remove mit perror ab ) sie müsste also gelöscht sein.

    Ist sie aber offensichtlich doch nicht.

    Das hab ich auch im Explorer nachgeschaut.

    Das Programm läuft weiter, bis zu der Stelle, an der der Ordner gelöscht werden soll.

    Wechsele ich nun in den zu löschenden Ordner, um die Datei (nochmal ) zu löschen, erhalte ich die Fehlermeldung 'No such file in directory'

    Ich hab das Programm dann nochmal angehalten, und schaue im Explorer nach, und siehe da, die Datei wird weiter angezeigt.

    Auch nach dem Versuch, nun den Ordner zu löschen, ist die Datei weiter im Ordner vorhanden.

    Hat das Programm sich nun beendet, ist die Datei auch nich mehr vorhanden.

    Also ich hab echt keine Erklärung für dieses Verhalten.

    Chiao

  2. Hallo

    Danke für die schnelle Antwort

    Im Standard nicht, du musst auf betriebssystemspezifische Funktionen zurückgreifen. Unter Windows wäre das FindFirstFile und FindNextFile.

    Die beiden Befehle werd ich mir mal anschaun

    Ist das die vollständige Fehlermeldung?

    Ja, das ist die Fehlermeldung die perror beim Aufruf von remove(ordner) liefert.

    Kannst du denn den Ordner im Explorer löschen?

    Ja, das ist kein Problem.

    Chiao

  3. Hallo

    Ich würsste gerne, ob es eine c-Funktion gibt, mit der ich die Dateien in einem Ordner ermitteln kann?

    Eigentlich will ich den Ordner löschen, aber wenn ich das versuche erhalte ich die 'Fehlermeldung : Directory not empty

    Wenn ich mir den Ordner im Explorer anschaue, wird aber angezeigt, Ordner ist leer. (versteckte Dateien lasse ich mir auch anzeigen )

    Falls einer ne Idee hat, was da los ist, bzw sein könnte, wär auch schön.

    ansonsten würde ich mir halt gerne im Programm die Dateien anzeigen lassen oder deren Namen auslesen oder was weiß ich was machen um rauszukriegen was da drin ist.

    Dann kann ich das ja löschen, bis der Ordner leer ist.

    Vielen Dank

  4. Hallo

    Ich hab ein Problem mit remove und fopen in einem c-Programm.

    In einer Funkton wird mit fopen(dateiname , "w") eine Datei erzeugt, es werden Werte reingeschrieben, mit diesen gerechnet, und am Ende wird die Datei gelöscht.

    Diese Funktion rufe ich in einer for-Schleife mehrmals auf.

    Wenn ich die Datei nicht lösche, läuft die Funktion auch immer ohne Fehler.:)

    Lösche ich die Datei aber, so erhalte ich beim nächsten Funktionsaufruf die Fehlermeldung 'permission denied', wenn ich die Datei mit fopen erzeugen und öffnen will.:confused:

    Ich programmiere das ganze auf einem Windows-Rechner (Vista) und compiliere mit gcc. Dazu habe ich cygwin installiert.

    Könnte ja sein, dass das für das Verständniss des Problems wichtig ist.

    Vielen Dank

  5. Vielen Dank

    Schau bitte einmal den Code unter 19.3.1 an, es gibt unter unixoxiden Systemen keine "dir.h" !!

    Das wars. Ich musste statt der dir.h die andren beiden header einbinden und voila der Ordner ist da.

    Das hätte ich ja auch mal vorher probieren können:upps

    Da wurde mir ja echt schnell weitergeholfen.

    Nochmal Danke

  6. vielen Dank für die schnelle Antwort

    evtl hilft Galileo Computing :: C von A bis Z – 19.3 Verzeichnis-Funktionen

    Ich weiß ja schon welche Funktion ich nutzen will, nämlich mkdir(). Für die brauch ich aber den header dir.h. Das hab ich übrigens aus Galileo Computing, die Seite ist echt gut.

    Nur zum Verständnis: Warum nutzt unter Windows eine Unix-Emulation unter der Du entwickelst? Nimm doch z.B. Visual Studio Express und entwickel nativ darunter. Falls Du beabsichtigst cross-plattform zu entwickeln, würde ich Dir dann eher in Richtung C++ mit dieser Bibliothek raten: http://www.boost.org/doc/libs/1_39_0.../doc/index.htm

    Manche der Programme die ich schreib, müssen auf nem sun-Rechner laufen (zZ. nur 1 ). Zuhause hab ich halt Windows. Ich denke da ist cygwin ne gute Lösung. Bis jetzt hat ja auch alles geklappt. Wenn ich neue header gebraucht hab, hab ich auch immer ne Info gefunden, in welchen Paketen die stehen.

    Gruß August

  7. Hallo

    Ich programmiere zurzeit ein Programm in c.

    Um einen Ordner mit mkdir() zu erstellen brauche ich den header dir.h, der nicht vorhanden ist.

    Als Compiler nutze ich gcc, der unter cygwin auf meinem Windowsrechner läuft.

    Weiß jemand welche packages von cygwin ich installieren muss, um den Header dir.h zu erhalten, bzw wo man erfährt welche header in welchen Packages stehen.

    Googlen hat hier nicht geholfen.

    Vielen Dank

  8. Wenn du die Daten binär verarbeitest (fread, fwrite), kannst du fseek benutzen, denn dann ist jeder Eintrag sizeof(double) Bytes groß.

    Wenn es auf Geschwindigkeit ankommt, und die Datenmenge nicht zu groß ist, sind vielleicht Memory Mapped Files eine Lösung. Das ist dann aber betriebsystemspezifisch.

    Hallo Klozkopp

    Es klappt :-)

    Vielen Dank für die sehr hilfreichen Tips

  9. Hallo

    Weiß jemand wo es Script von Funktionen oÄ. für den Gaus'algorithmus mit Totalpivotsuche zum runterladen gibt.

    Ich brauch den für ein Programm, und es würde mir doch ein Haufen Zeit sparen, wenn ich Funktionen kopieren könnte, die ich nur noch entsprechend abändern muss.;)

  10. Wenn du die Daten binär verarbeitest (fread, fwrite), kannst du fseek benutzen, denn dann ist jeder Eintrag sizeof(double) Bytes groß.

    Wenn es auf Geschwindigkeit ankommt, und die Datenmenge nicht zu groß ist, sind vielleicht Memory Mapped Files eine Lösung. Das ist dann aber betriebsystemspezifisch.

    Das die Einträge dann gleich groß sind, stand ja auch schon in deiner letzten Antwort. Hab ich irgendwie übersehen.:upps

    Aber schön, dass es geht.:)

    Leider ist die Datenmenge zu groß. Das ist genau der Grund, weshalb ich mit Dateien arbeiten muss, und weshalb ich den Kram überhaupt in c schreibe.

    Nochmal danke

  11. Bei dieser Formatierung sind negative Zahlen schon einmal ein Zeichen länger, wegen des Vorzeichens. Das könntest du beispielsweise durch "%+E" oder "% E" (mit Leerzeichen in der Mitte) umgehen.

    Der C-Standard sagt, dass der Exponent mindestens zwei Zeichen haben soll, und darüber hinaus nur soviele wie nötig. Auch hier hast du also keine feste Länge. Der Compiler von Visual C++ 2008 hält sich hier übrigens nicht an den Standard. Dort hat der Exponent immer 3 Ziffern.

    Und schließlich gibt es noch double-Werte, die gar keine Zahlen darstellen, z.B. "inf" oder "nan".

    Außerdem solltest du bedenken, dass bei der Formatierung als Text die Werte sehr häufig gerundet werden müssen. Genaue Werte kannst du nur erreichen, indem du die Werte binär speicherst. Dann hättest du auch eine einheitliche Größe, egal wie der Wert aussieht. Allerdings verlierst du dann die Portierbarkeit, denn weder die Größe noch die interne Darstellung von Gleitkommatypen ist standardisiert.

    Vielen Dank für die prompte Antwort, und den Tip.

    Der ist echt hilfreich, da es schon sehr auf Genauigkeit ankommt.

    Binär speichern muss ich mir dann allerdings noch mal anschaun.

    Tja und fseek werde ich denn wohl nicht verwenden können, um einen bestimmten Eintrag zu finden. :(

    Das wäre bestimmt schneller gewesen, als meine Funktion die ich jetzt dazu nutze.

  12. Hallo

    Ich habe double Werte mit fprintf("%E",&var) in einer Datei gespeichert, und möchte beim lesen der Werte in dieser Datei nun fseek verwenden.

    Dazu wüsste ich gerne, ob double Variablen bei dieser Formatierung (oder bei einer Anderen) immer mit der gleiche Anzahl von Zeichen gespeichert werden.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...