c++ Dateisuche/Pfadangabe

hallo leute;

ich habe folgendes problem: ich bin ein totaler c/c++-neuling und habe in c++ ein programm geschrieben (unter suse linux), das eine datei öffnet und den inhalt verändert (das hab ich noch geschafft ). die endung der datei ist .scn . mein problem ist , dass das programm aber nicht diese eine scn-datei ändern soll , sondern alle die sich im selben verzeichnis (wie das programm) und auch in den unterverzeichnissen befinden.

meine fragen lauten nun:

1. eine datei die sich im selben verzeichnet befindet wie mein prgramm , ruft man mit datei.open("test.scn") usw. auf und kann sie dann bearbeiten. wie macht man das, wenn sich die datei nicht im selben verzeichnis befindet ???

2. gibt es bei diesem aufruf unterschiede zwischen unix- und windows-systemen ?? ... die verzeichnisstruktur ist ja auch eine andere ..

3. gibt es eine möglichkeit in c++ dateien nach ihrer endung aufzurufen ??? z.B. alle *.scn dateien ...



ich wäre sehr dankbar für funktionierende beispeileprogramme.

falls jemand meinen quelltext sehen will, kann ich ihn gerne nachreichen;
viel dank im vorraus =)
 
Hier waehre ein kleines (und auch nicht umbedingt huebsches) Beispielprogramm welches den Inhalt eines Verz. ausliest, ihn ein wenig filtert, und die gewuenschten Dateien kurz oeffnet. Recursive arbeitet es noch nicht und die nutzung der Funktion scandir wuerde sicherlich auch nicht schaden. Naja vieleicht morgen Abend sollte ich die Zeit finden.

Fuer Windows habe ich schon laenger nichtmehr programmiert aber ich denke das man soweit nur die Pfade anpassen muesste.

Code:
#include<stdio.h>
#include<sys/types.h>
#include<dirent.h>
#include<errno.h>

int main(int argc, char *argv[]) {
	DIR 		*dirp;	/* Pointer auf das geoeffnete Verzeichnis */
	struct	dirent	*dirt;	/* Structur fuer die Eintraege im Vrz. */
	FILE		*files;
	char		ourdir[]="/home/thand/test";

	/* Oeffnet das gewuenschte Verzeichnis
	 * und gibt einen Pointer zum dir. stream zurueck */
	if((dirp=opendir(ourdir)) == NULL) {
		perror("opendir()");
		return 0;
	}
	
	/* Nun gehen wir alle eintraege in dem
	 * verzeichnis durch. strstr ist zwar nicht sehr
	 * elegant fuer die aufgabe nur .scn datein heraus-
	 * zufiltern (test.scn.bla wuerde auch gefunden)
	 * aber scandir oder co. waehren nun etwas laenger */
	while((dirt=readdir(dirp)) != NULL) {
		if(strstr(dirt->d_name,".scn") != NULL) {
			printf("\n%s", dirt->d_name);
			/* Wir setzen das working dir. auf
			 * das von uns gewuenschte um die
			 * die Dateien zu  oeffnen.
			 * Alternativ koennten wir sie auch mit
			 * ihrem absolutem Pfad oeffnen
			 * fopen("/our/dir/file.scn","r"); */
			chdir(ourdir);
			files = fopen(dirt->d_name,"r");
			/* Tu was auch immer du gerne mit deinen
			 * Datein tun willst */
			fclose(files);
		}
	}

	/* Und unsre Verzeichniss wieder schliesen. */
	if(closedir(dirp)==-1) {
		perror("closedir()");
		return 0;
	}
	
	return 1;
}

Ergaenzung erwuenscht :)
 
Zurück
Oben