Anfänger braucht Hilfe [

JpmStation

Grünschnabel
Hi all, ich studieren Medieninformatik und bin Anfänger in der Programmiersprache C.
Nun habe ich folgende Programmieraufgabe erhalten und weiß nicht genau wie ich vorgehen könnte und welche Funktionen aus string.h ich benutzen sollte.

Die Aufgabenstellung:
Durchsuchen eines Strings nach einer
Windows-Dateiangabe mit Pfadangabe, z.B.
C:\Verzeichnis1\(Verzeichnis2\)Dateiname.Dat
einame_Fortsetzung.Dateiendung, Extraktion
und Rückgabe der Dateiangabe mit Pfad

Wäre echt Klasse wenn mir jemand einen Ansatz geben könnte.
Mein Hauptproblem liegt bei der Extraktion mehrer Pfade (C:\...) unbekannter Länge aus einem eingelesenem String A in mehrere neue Strings B,C,D,...

Hoffe jemand kann mir Helfen.
Viel Dank im Vorraus für jeden Beitrag.
 
Sind die Pfade in Deinem ursprünglichen String durch irgendwas getrennt (Leerzeichen, Semikolon,...)?
 
Kangaxx hat gesagt.:
Wie bei normalen Pfad-Angaben mit " \ " denk ich... korrigier mich wenn ich mich irre!

Also bei Windows sind die Verzeichnisse durch \ getrennt, bei Linux/Unix auch... aber die Frage lautete ob die Pfade durch was getrennt sind, also z.B.

C:\test.txt ; d:\test1\testi.txt ; r:\ hasf\te.sg ; ......

Weil du die Pfade ja erstmal bekommen musst. Ist da z.B. ein Leerzeichen zwischen, oder nen Semikolon wie oben oder sonstwas eindeutiges ?

Ansonsten wird das ne Mega Arbeit für den PC, denn dann müsstest du jedes mal wenn ein :\ kommt den buchstaben davor nehmen, und alles was da hinter kommt in jeder möglichen Kombination testen ob es so eine Datei / Verzeichnis gibt... Das ist wahnsinn und geht dann auch nur für kleine Strings, sonst würde die Suche gegen unendlich gehen....

Also nach nem Trennzeichen suchen, und wenns keins gibt, mach dir eins rein ! ;)

Gruss

MFC OpenGL
 
ich denke mal, dass es hier nicht primär darum geht irgendwas mit dem Pfad anzufangen, sondern eher darum, den String zu zerlegen. Meiner Meinung nach ist das kein allzu großes Problem

anfangs schaust mal, ob du im array ":/" findest. solltest das gefunden haben kannst denke ich mal davon ausgehen, dass es ein pfad ist.

ich weis nicht genau, ob das so machen sollst oder nicht, aber ich denke mal dass das ein ansatz währe ^^

also.
im Array acPfad steht zB "C:\Programme\programm.exe"
nachdem du weist, dass das ein Pfad ist fangst an zu lesen und schreibst alle buchstaben (ASCII 65 - 122) in ein array. wenn du dann zu "\" gelangst schreibst das folgende in das nächste Array, dann bei "\" wieder ins nächste...
Dabei solltest dann noch überprüfen, ob du . findest, denn der zeigt an, dass dann die Dateiendung folgt, demnach schreibst das was nach dem Punkt kommt wieder in ein array
(meiner Meinung nach am einfachsten mit Mehrdimensionalen Arrays)

Ich weis nicht ob es so gemeint war, aber es währe mal eine Idee, da ich letzes jahr genau die selbe Hausübung hatte (von der HTL aus)

MFG Masda
 
Vielen Dank schon mal für deine Idee Biergamasda, denke dass das etwa hinkommen sollte.
Werde das mal so in etwa schreiben und melde mich dann nochmal.
 
Wollte mal fragen wie weit du bist, hab das Programm zu Übungszwecken mal geschrieben, funktioniert au alles. Würde mich interessieren wie du es gemacht hast. Kannst das Programm ja mal online stellen..
 
Zurück