Dateityp anhängen, aber wie?
-
int NoDotInString (char *Dateiname) { int result = 0; int i = 0; while (Dateiname [i] != 0) { if (Dateiname [i] == '.') result = -1; i++; } return result; } void main() { char Dateiname [81]; printf("Bitte geben Sie den Dateinamen ein"); scanf("%s", Dateiname); printf("\n"); if (NoDotInString (Dateiname) ) { strcat(Dateiname,".txt"); } . . . .
Hallo Leute,
ich bin gerade dran für die Schule ein paar Übungen zu machen und hänge an dem oberen Quellcode fest. Aufgabe war es eine Datei zu auf ihre Endung zu prüfen und wenn keine vorhanden ist ".txt" anhängen.
Wie ich finde mit der schönen Funktion strcat kein Problem.
Jetzt sollen wir das gleiche, also ".txt" anhängen ohne irgendeine Funktion aus der string.h lösen.Ich bekomme da irgendwie keinen anfang.
Ich weis das man zwar Datei öffnen, etwas anfügen und wieder schliessen kann. Aber das funktioniert ja nicht mit der Datei selber?! Steh total aufm Schlauch.
Könnt ihr mir weiterhelfen? Programmieren ist irgendwie net so meins
Vielen Dank!
-
Bei
NoDotInString
greifst du doch auch auf die eunzelnen Arrayelemente zu.
strcat macht das genauso.Ende suchen und dann die Zeichen in das Array kopieren.
-
Übrigens gibt es kein "void main" im C-Standard.
Lies dazu am besten mal das hier: http://users.aber.ac.uk/auj/voidmain.cgiDesweiteren ist dein Code unsicher (Stichwort: Buffer Overflow)
Wenn jemand kommt und eine Eingabe macht, die länger als 80 Zeichen ist, kann dir das Programm um die Ohren fliegen... (im besten Fall :p)
Im schlimmsten Fall kann der Anwender eigenen Code einschleusen und evtl. Adminrechte bekommen. (Bei deinem Programm zwar eher nicht, aber du solltest später bei großen Projekten auf sowas achten!)
-
Mal was anderes.
Kann es sein das der Rückgabewert aus der Funktion falsch ist. Wenn ich kein Punkt in dem Dateinamen habe ist der
return
Wert doch 0 also UNWAHR für dieif
schleife in dermain
. Also müsste die Anweisungstrcat
übersprungen werden? Das soll ja nicht der Fall sein, da wir ja den Dateityp anhängen wollen.Seh ich das richtig???
-
#include "stdafx.h" int NoDotInString (char *Dateiname) { int result = 1; int i = 0; while (Dateiname [i] != 0) { if (Dateiname [i] == '.') result = 0; i++; } return result; } int AppTXT (char *Dateiname) { int i = 0; while (Dateiname [i] != 0) { i++; } Dateiname[i] = '.'; i++; Dateiname[i] = 't'; i++; Dateiname[i] = 'x'; i++; Dateiname[i] = 't'; i++; Dateiname[i] = 0; printf("Datei erfolgreich geaendert!%s\n",Dateiname); return 0; } void main() { char Dateiname [81]; printf("Bitte geben Sie den Dateinamen ein:\n\n"); scanf("%s", Dateiname); printf("\n"); if (NoDotInString (Dateiname) ) AppTXT(Dateiname); printf("\nENDE\n\n"); }
Sodelle....jetzt funzt alles wie gewollt. Vielleicht nicht ganz sauber in der Programmierung aber es geht
Vielen Dank für die Hilfen!
-
Du kannst das zusammenfassen:
Dateiname[i++] = '.';
Denn dafür wurde der (Post-)Inkrementoperator gemacht.
Benutze erst den Wert von i (als Index) und dann erhöhe i.