fopen lässt C/C++-Programm stolpern

Januar

Level-2
Beiträge
650
Reaktionspunkte
270
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Community,

ich schreibe grade mit Eclipse ein C/C++-Programm für den IOT2040. Ich habe bloß folgendes Problem:
Ich kann in einer Unterroutine keine Datei öffnen/erstellen.

Mit

fp=fopen("/home/Projektordner/iprange", "w");

kann ich in der main-Prozedur eine Datei erstellen. Wenn ich den Code so ausschneide und in einer anderen Routine aufrufe, verheddert sich das Programm an der Stelle. Die aufrufende Routine wird von einer Routine aufgerufen, die von main aufgerufen wird.
Ich kann genau sagen, dass diese Codezeile das Problem darstellt, weil ich gesagt hab, dass in de Zeile vorher die LED auf rot gehen soll (was sie tut). Wenn fp==0, dann soll LEd orange werden, ansonsten soll sie grün werden. Aber weder das eine, noch das andere passiert.

Der Ordner "Projektordner" existiert in dem Home-Verzeichnis.

Hoffend auf Lösungsvorschläge,
Januar
 
ich schreibe grade mit Eclipse ein C/C++-Programm für den IOT2040
welcher Kompiler?

kann ich in der main-Prozedur eine Datei erstellen
in main geht es also

Wenn ich den Code so ausschneide und in einer anderen Routine aufrufe, verheddert sich das Programm an der Stelle.
was auch immer das bedeuten soll

ist dein Testszenario absolut minimal klein - d.h.
die main mit fopen und eine sub-funktion mit fopen?

in der Art

Code:
const char* const filename = "/home/Projektordner/iprange";

int test()
{
  FILE* fp = fopen(filename, "w+");
  assert(fp != 0); // "LED auf rot"
  int res =  fclose(fp);
  assert(res == 0); // "LED auf rot"
}

int main()
{
  FILE* fp = fopen(filename, "w+");
  assert(fp != 0); // "LED auf rot"
  int res =  fclose(fp);
  assert(res == 0); // "LED auf rot"
  
  test();
}

ansonsten ein Minimalbeispiel machen, teste und dann bitten Posten (mit Code-Tags)

Der Ordner "Projektordner" existiert in dem Home-Verzeichnis.
case sensitive?

btw: LED schaltet ist ein wenig magere Debug-Möglichkeit - kannt du nicht Steppen oder irgendwo anders Infos ausgeben - wär auch sehr hilfreich wenn das Projekt größer wird
 
Zuviel Werbung?
-> Hier kostenlos registrieren
FILE* fp = fopen(filename, "w+");

"w+"
ist das richtig, wenn die datei bereits existiert bzw. noch nicht existiert ?
Es gibt auch append ; glaube "a"

gibt es catch {} und try {} ?
 
Problem gelöst. Die File-Verarbeitung war nicht das Problem, sondern eine Typkonvertierung. Ich hasse Strings...
 
Zurück
Oben