• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

c++ Dateisuche

infiltrator17

Anwärter/in
Mitglied seit
08.06.2003
Beiträge
40
Reaktionspunkte
0
hi, ich wollte das mein Prog eine Datei im Laufwerk C:\ sucht.
hab schonmal nen beispiel gefunden:

#include <stdlib.h>
#include <stdio.h>

void main (void)
{
char pathbuffer[_MAX-PATH];
char searchfile[] = " *Dateiname* "
char envvar[] = "Pathname"

_searchenv( searchfile, envvar, pathbuffer);
if (*pathbuffer != `\0`)
printf ( "Path for %s; %s\n", searchfile, pathbuffer );
else
printf ( " %s not found\n" , searchfile );
}

Nun zur eigentlichen Frage: Wo sagt man den in dem Quellcode, wo er suchen soll, er sucht ja da nur in dem Verzeichnis, wo er sich gerade befindet. wär schön wenn ihr mir helfen könntet, thx schon mal in voraus.

mfg
 
Ich habe keine Ahnung von _searchenv(), wette aber darauf, dass envvar den Pfad angibt in dem gesucht wird. Nebenbei solltest du nie C:/ angeben, sondern die Systemplatte ermitteln, da es Systeme ohne C:/ gibt.

Angryminer
 
nenen also so geht das mal sicherlich net, du kannst ja net einfach copy und paste machen und dann erwarten dass es funktioniert, z.b. könntest mal wo pathname steht den pfad eingeben usw, das wäre doch was ;)


aber ich würde eh schönes c++ bevorzugen

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
ifstream datei("c.\\datei.txt");
if(datei == NULL)
{
cout << "Datei nicht gefunden" << endl;
}
else
{
cout << "datei gefunden" << endl;
}

return 0;
}

achjah, es ist ein klitzekleiner fehler drin, ich sag ihn dir nichtk, wir wollen hier ja kein copy und paste sauerei machen ;)
 
HaschHase am 23.09.2004 20:02 schrieb:
nenen also so geht das mal sicherlich net, du kannst ja net einfach copy und paste machen und dann erwarten dass es funktioniert, z.b. könntest mal wo pathname steht den pfad eingeben usw, das wäre doch was ;)


pathname verändern hab ich probiert, dann hat der linker zwei fehler.

das ist doch c++
 
Ersmal Heißts nicht c:/ sondern c:\ und ich würd die Pfadangabe mit / machen und das Programm dann mit Linux kompielieren das müsste klappen
 
che1851 am 23.09.2004 21:08 schrieb:
HaschHase am 23.09.2004 20:02 schrieb:
achjah, es ist ein klitzekleiner fehler drin, ich sag ihn dir nichtk, wir wollen hier ja kein copy und paste sauerei machen ;)
Soviel dazu... :rolleyes:

Aber vielen Dank HaschHase, ich kann das Beispiel auch gut gebrauchen! Bin gerade dabei, C++ zu lernen (sprich: bin noch nicht über primitivsten Taschenrechner raus *g*) und versuche möglichst viele solcher Beispiele nebenbei aufzuschnappen :) .

MfG Erik
 
ifstream datei("c:\\datei.txt");




was soll denn das "if stream datei" bedeuten?
was meinst du mit stream?
der compiler sieht es als unbekannten bezeichner.
soll dich da auch nochmal "datei.txt" hin schreiben?
 
infiltrator17 am 27.09.2004 10:27 schrieb:
ifstream datei("c:\\datei.txt");




was soll denn das "if stream datei" bedeuten?
was meinst du mit stream?
der compiler sieht es als unbekannten bezeichner.
soll dich da auch nochmal "datei.txt" hin schreiben?

ganz einfach, ifstream, steht für in filestream, da wird die datei geöffnet, falls sie vorhanden ist, wenn nicht gibt es einen nullwert zurück, was mittels

(variable==NULL)
{
datei nicht vorhanden
}
else
{
datei vorhanden

}

geprüft werden kann, ofstream ist zum schreiben von datei
alles in <fstream> vorhanden
ach, aufbau von ifstream ist so
ifstream für einlesen, ofstream für schreiben

ifstream variable(pfad zur text datei);

ifstream variable("datei.txt");

also muss datei.txt im gleichen ordner sein

was soll denn das "if stream datei" bedeuten?
was meinst du mit stream?
der compiler sieht es als unbekannten bezeichner.

also falls dieser fehler auftritt, kann ich dir nur sagen, du musst <fstream> includen, also die ganzen file streams

#include <fstream>

achjah, hier noch ein tutorial wo ich früher mal geschrieben hab

http://naschhase.na.funpic.de/tutorials/c++/tut_6.php

falls es immer noch nicht klappt
meld dich einfach bei mir

ICQ : 222117289
MSN MESSANGER: raphaelmayer@web.de
 
che1851 am 23.09.2004 21:08 schrieb:
Ersmal Heißts nicht c:/ sondern c:\ und ich würd die Pfadangabe mit / machen und das Programm dann mit Linux kompielieren das müsste klappen

*hust* zum einen heißt es ausschließlich in der windows-welt \ und zum anderen ist das beim coden vollkommen schnuppe, weil wohl irgendjemand beschlossen hat, daß man nur für die microkomiker aus redmond keine extra-wurst braten muß.

ich würde sogar tunlichst zu / raten, weil man sonst a) \\ schreiben muß (nur \ würde ein sonderzeichen einleiten) und b) das programm sonst unter jedem anständigen os streikt.
 
infiltrator17 am 23.09.2004 20:31 schrieb:

das ist zum einen eher c (auch wenn man c und c++ nicht unbedingt immer klar trennen kann) und zum anderen sollte einem das _ vor dem namen sagen: "hoppla, das gehört eigentlich nicht wirklich dazu, ich benutze mit großer sicherheit visual c++ und eigentlich ist das nur zur kompatibilität vorhanden".

das ifstream beispiel würde ich auch ganz schnell vergessen, denn es hilft dir beim suchen nach einer datei herzlich wenig, wenn du einfach mal "blind" überprüfst, ob zufällig die datei unter c:\ rumliegt.

grundsätzlich ist das, was du machen willst vom os abhängig, gehört nicht zu c/c++ selbst und führt für einen anfänger vielleicht doch schon ein wenig zu weit.

nebenbei:
The routine searches first for the file in the current working directory. If it does not find the file, it looks next through the directories specified by the environment variable. If the target file is in one of those directories, the newly created path is copied into pathname. If the filename file is not found, pathname contains an empty, null-terminated string.

oder auf deutsch, das ding sucht im aktuellen verzeichnis und allen verzeichnissen, die in der angegeben umgebungsvariablen stehen (z.b. path ist unter win/dos halbwegs üblich). das ding hilft dir also auch keinen meter weiter.

der spaß, den du dir antun darfst ist z.b.

_findfirst(blabla) (google ist dein freund);
wenns die richtige ist, schön, sonst:
_findnext(blabla);
alle durch und nicht gefunden?
nochmal von vorn und diesmal rekursiv alle dateien durchsuchen, die ein verzeichnis sind
 
Trienco am 08.10.2004 09:26 schrieb:
infiltrator17 am 23.09.2004 20:31 schrieb:

das ist zum einen eher c (auch wenn man c und c++ nicht unbedingt immer klar trennen kann) und zum anderen sollte einem das _ vor dem namen sagen: "hoppla, das gehört eigentlich nicht wirklich dazu, ich benutze mit großer sicherheit visual c++ und eigentlich ist das nur zur kompatibilität vorhanden".

das ifstream beispiel würde ich auch ganz schnell vergessen, denn es hilft dir beim suchen nach einer datei herzlich wenig, wenn du einfach mal "blind" überprüfst, ob zufällig die datei unter c:\ rumliegt.

grundsätzlich ist das, was du machen willst vom os abhängig, gehört nicht zu c/c++ selbst und führt für einen anfänger vielleicht doch schon ein wenig zu weit.

nebenbei:
The routine searches first for the file in the current working directory. If it does not find the file, it looks next through the directories specified by the environment variable. If the target file is in one of those directories, the newly created path is copied into pathname. If the filename file is not found, pathname contains an empty, null-terminated string.

oder auf deutsch, das ding sucht im aktuellen verzeichnis und allen verzeichnissen, die in der angegeben umgebungsvariablen stehen (z.b. path ist unter win/dos halbwegs üblich). das ding hilft dir also auch keinen meter weiter.

der spaß, den du dir antun darfst ist z.b.

_findfirst(blabla) (google ist dein freund);
wenns die richtige ist, schön, sonst:
_findnext(blabla);
alle durch und nicht gefunden?
nochmal von vorn und diesmal rekursiv alle dateien durchsuchen, die ein verzeichnis sind


das problem ist, ich MUSS es können. ist Abi-Projekt informatik. ich hab mir als Aufgabe genommen, einen kleinen virus zu schreiben.

habs früher auch mal mit tp probiert, hatte dann ein fehler drin, den ich einfach nicht gefunden hab.
und deshalb c++.
ich benutze auch visual c++, nen kumpel hat mir eigentlich an dev c++ geraten, aber naja als noob, ist visual besser oder?

mit findfirst, usw. probier ich gleich mal aus, muss nur mal c++ wieder raufhauen (musste rechner neu machen)

mfg
 
Zurück