Veröffentlicht 9. Mai 201015 j Hallo, ich habe kürzlich ein Programm unter Linux geschrieben, welches eine Datenbank aus einer txt-Datei einliest, mit dieser dann je nach Benutzereingabe rechnet und die Datenbank anschließend wieder in die txt-Datei speichert. Das Programm läuft einwandfrei. Nun wollte ich es auch unter Windows 7 zur Verfügung haben. Also habe ich den gleichen Quelltext in Windows kompiliert und es funktioniert nicht. Das Programm liest die Werte korrekt ein und rechnet auch korrekt, doch kann es nicht mehr speichern. Selbst ein simpelstes Programm, welches nur ein Zeichen in eine txt-Datei schreiben soll, funktioniert bei mir nicht, da es nicht gespeichert wird. Zum Kompilieren habe ich schon dmc und Dev-C benutzt. Woran kann das liegen? Vielen Dank im Voraus
9. Mai 201015 j Gibt es auch eine vernünftige Fehlermeldung? Wie sieht dein Code aus? Wo willst Du speichern? Darfst Du dort speichern? Stichwort Rechte? Frank
9. Mai 201015 j Dev-Cpp solltest Du nicht mehr verwenden, da es seit einigen Jahren nicht mehr entwickelt wird und das Projekt wohl eingestellt ist (siehe Wikipedia). Ansonsten schließe ich mich an, dass Du bitte einmal den Code zeigen solltest
9. Mai 201015 j Der Compiler gibt keinerlei Fehlermeldung aus. In Linux hat es ja auch funktioniert. Speichern möchte ich in C:/Ordner Den Ordner habe ich selbst erstellt, da dürfte es ja keine Probleme geben. Der ursprüngliche Code ist etwas komplex. Ich habe mal ein sehr einfaches Programm geschrieben: ... int main() { FILE *data; data = fopen("Datei.txt", "r+"); int c = 'a'; fputc(c, data); fclose(data); } Hier bleibt die Datei seltsamerweise unverändert.
9. Mai 201015 j Der Code lässt sich bei mir auf OSX, Gentoo Linux mit GCC und unter Windows 7 mit Visual Studio ohne Probleme kompilieren. Ich würde einmal tippen, dass es Probleme mit den Rechten sind
9. Mai 201015 j Ich werde es auch noch einmal mit Visual Studio versuchen. Aber wieso sollte ich keine Rechte in einem selbst erstellten Ordner auf C haben? Habe auch schon "Als Administrator ausführen" versucht.
10. Mai 201015 j Bist Du sicher, dass er in C:/Ordner speichern will? Überigens C:/Ordner gibt es nicht. Höchstens C:\Ordner. Frank
10. Mai 201015 j @Frank: naja laut dem Quellcode ist die Datei relativ zum ausführenden Pfad, was auch ohne Probleme funktioniert
10. Mai 201015 j Habe gerade eben etwas herausgefunden: Öffne ich die Datei mit fopen(..., "w") so schreibt er die Datei und fügt auch in dem Beispiel den Buchstaben ein. Mit den Schreibrechten dürfte es also kein Problem geben. Wieso funktioniert denn dann aber "r+" nicht? Habt ihr eine Idee?
10. Mai 201015 j Ich habe es gelöst, wenn ich es auch nicht verstehe. Die Datei existierte natürlich vorher schon, "r+" ist ja ein Lesemodus. Wenn ich über Rechtsklick->Neu->txt-Datei im Explorer eine Datei erstelle und dann das Programm laufen lasse, funktioniert es nicht. Erstelle ich jedoch zuerst mit einem Programm mit fopen(..., "w") eine txt-Datei und lasse dann das Programm mit "r+" laufen, so funktioniert es komischerweise. Jetzt kann ich die Datei auch mit dem Editor bearbeiten und es funktioniert trotzdem noch. Seltsam, oder? Vielen Dank für die Hilfe!
10. Mai 201015 j Ich habe mir jetzt noch mal die Parameter angeschaut und Du hast Recht. Wenn ich eine Datei mit "r" oder "r+" öffne, dann muss diese Datei bereits existieren. Welche Rechte hat denn die Datei wenn Du diese mit dem Programm erstellst und einmal mit dem Explorer? Frank
10. Mai 201015 j Du hast Recht. Die Speicherungsdatei, die ich aus Linux herübergezogen habe, besaß keine Änderungsrechte. Da bin ich jedoch nicht drauf gekommen. Wusste auch bis eben noch nicht, das es dafür bei Windows 7 in den Dateieigenschaften einen eigenen Reiter gibt (Habs erst neu). Vielen Dank nochmal
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.