Beim Speichern automatisch eine Dateiendung beifügen
-
dann sorg dafür das len nicht kleiner als 5 ist. Bei nem statischen buffer wäre das auch ziemlich sinnfrei. Und wenn du den Speicher dynamisch reservierst machst du halt vornedran eine Abfrage.
-
Wieso ist das sinnfrei? Ich kann meine Datei doch "123" nennen wenn ich will.
-
In wenigen Fällen wird es vorkommen dass ein Dateiname nur 5 Zeichen lang ist. Schon allein die Endung verbraucht ja 4 Zeichen.
-
Es geht ja darum dass der Benutzer eben keine Dateiendung eingibt. Drum soll die ja angehängt werden, falls er das nicht macht.
-
nwp2 schrieb:
Trotzdem bin ich kein Freund von "vielleicht reichts ja".
bei 'nem filesystem, das keine punkte im namen erlaubt (FAT 8.3 z.b.), reichts ja tatsächlich.
btw, vielleicht noch der hier:char *found = strstr (dateiname, ".txt"); if (found == 0 || found[4] != 0) { strcat (dateiname, ".txt"); }
-
player4245 schrieb:
dann sorg dafür das len nicht kleiner als 5 ist. Bei nem statischen buffer wäre das auch ziemlich sinnfrei. Und wenn du den Speicher dynamisch reservierst machst du halt vornedran eine Abfrage.
Wie ist das eigentlich? Windows macht zB Beschränkungen der Pfadangaben auf MAX_PATH, machen das die Unix-Leute auch so? Jedenfalls würde ich nach solchen Grenzen Ausschau halten, wenn es um die Puffergrösse geht, anstatt hier mit realloc() herumzubasteln.
-
;fricky schrieb:
char *found = strstr (dateiname, ".txt"); if (found == 0 || found[4] != 0) ...
Das ist nett, und man versteht's auch sofort.
-
µngbd schrieb:
Das ist nett, und man versteht's auch sofort.
Hmm. Andererseits: wenn in dem String viele Vorkommen von
.txu
sind, wird man wahrscheinlich mit strlen() besser dran sein.
-
Unglaublich wie es dieses Forum immer wieder schafft aus völlig banalen Themen das komplizierteste der Welt zu machen.
-
player4245 schrieb:
Unglaublich wie es dieses Forum immer wieder schafft aus völlig banalen Themen das komplizierteste der Welt zu machen.
Ein Beweis dafür, dass banale Themen nur banal auf den ersten Blick erscheinen aber dennoch nicht trivial sind.