Hallo Leute, Ich bin auf der Suche nach einem Buch über C++ worin mehr beschrieben steht wie ich auf Daten auf meinem PC zugreifen kann. Also auch Festplatte, externe Festplatte und nicht nur auf Dateien in dem Ordner auf dem PC wo auch die .exe liegt. Ich will quasi überall drauf zugreifen können. Was ich nicht suche sind solche Bücher, die die Grundlagen über C/C++ erklären. Zum einen habe ich so ein Buch, zum anderen gibts dazu genügend Tutorials im Internet. Ich hoffe ihr wisst was ich meine. Danke für die Hilfen! :)
:
Verschoben durch Moderator
>Ich hoffe ihr wisst
Du suchst ein Buch für Dein Betriebssystem das für die Beispiele C++
verwendet -- da solltest Du wenigstens sagen welches OS Du verwenden
willst.
Das hat nichts mit C++ zu tun. C++ kennt i/ostreams, fertig. Damit kann man auf das 'Dateisystem' zugreifen; für Unix heißt das entsprechend: Auf CDs, Geräte, Festplatten, FTP-Verzeichnisse, Windows Freigaben, NFS-Laufwerke und so weiter, weil alle diese Dinge ins Dateisystem eingehangen werden können. KDE stellt eine weitere quasitransparente Schicht zur Verfügung (kio-Plugins) und treibt das Spiel noch weiter auf HTTP, ICQ(Oscar)-Übertragungen, Digitalkameras etc.
L. J. schrieb: > Ich bin auf der Suche nach einem Buch über C++ worin mehr beschrieben > steht wie ich auf Daten auf meinem PC zugreifen kann. Also auch > Festplatte, externe Festplatte und nicht nur auf Dateien in dem Ordner > auf dem PC wo auch die .exe liegt. Indem man bei der Angabe des Dateinamens auch immer den Pfad mit dazu gibt, kann man auf alles zugreifen, was sich im Dateibaum des Betriebssystems abbilden lässt. Wenn dein OS es schafft einen entfernten FTP-Server als Directory-Node in den Dateibaum einzubinden, kannst du natürlich dann auch mit der Angabe des Directory-Pfades auf diesen entfernten FTP-Server zugreifen und das darunterliegende OS kümmert sich um den Transport der Daten von/zum Server. Wo liegt also das Problem? Dass du nicht weißt, wie man auf deinem OS eine Pfadangabe formuliert?
Man braucht kein extra Buch dafür, suche doch mal nach Pfadangaben, diese sind entweder relativ oder absolut. http://lmgtfy.com/?q=pfadangaben+relativ+absolut
Na wenn es nur das ist. Die Sache war die. Ich hatte es schonmal versucht. Ich hatte eine datei einfach auf der Festplatte gespeichert und ich konnte sie einfach nicht finden, trotz Pfadangabe. Aber vielleicht habe ich da auch was falsch gemacht. Ich dachte man bräuchte dafür bestimmte Libraries oder ähnliches.
L. J. schrieb: > Na wenn es nur das ist. Die Sache war die. Ich hatte es schonmal > versucht. Ich hatte eine datei einfach auf der Festplatte gespeichert > und ich konnte sie einfach nicht finden, trotz Pfadangabe. Aber > vielleicht habe ich da auch was falsch gemacht. Ich dachte man bräuchte > dafür bestimmte Libraries oder ähnliches. Windows? Ich wette du hast vergessen, dass ein \ in einem String als \\ geschrieben werden muss. Die Datei test.txt im Verzeichnis temp, welches auf der Platte C direkt unter dem Wurzelverzeichnis liegt, hat unter Windows den vollständigen Namen in Form eines C-Strings "C:\\temp\\test.txt" (Dies deshalb, weil \ in C und auch in C++ eine Sonderrolle hat. \n bezeichnet den Line Feed Character \t bezeichnet den Tabulator Character \b bezeichnet den Backspace Character \\ schliesslich bezeichnet den \ Character ) Kann natürlich auch sein, dass die Datei gar nicht geschrieben wurde :-)
@L.J.: nee. Aber erstens gibt man das nicht so an: "C:\temp\a.txt", sondern "C:\\temp\\a.txt" oder "C:/temp/a.txt". Zweitens bekommt auf vernünftige Fragen auch leichter vernünftige Antworten, ohne erst 20 Leute ins Leere laufen zu lassen. So in der Art: Das habe ich versucht... und es klappt nicht weil...
Klaus Wachtler schrieb: > @L.J.: nee. > > Aber erstens gibt man das nicht so an: "C:\temp\a.txt", sondern > "C:\\temp\\a.txt" oder "C:/temp/a.txt". So ist es. Weil Der Backslash ein Escape Zeichen ist. Wenn man aber tatsächlichen einen Backslash als Zeichen schreiben will, muss man die Escape Sequenz \\ (zwei Backslashes hintereinander verwenden). Das kannst du auch in deinem C Buch nachschauen. Und du bist dir auch ganz sicher, dass in deinem C Buch kein einziges Beispiel mit absoluter Pfadangabe drin ist?
Ja tut mir Leid. Ich bin heute eh was im Stress. Deswegen auch nochmal ein Sorry dafür das ich hier bei Mikrocontroller und Elektronik reingeschrieben habe und nicht in PC-Programmierung. Ich bin heute etwas durch den Wind. Aber danke für die Hilfen ich werde es nachher mal versuchen, denn ich denke ich habe den Fehler schon gefunden :)
Nun ja, leider klappt es doch nicht so richtig. Ich habe jetzt eine Datei mit dem Namen test.txt erstellt. Sie liegt auf der Festplatte in dem Ordner temp. Also ist der Pfad ja C:\temp\test.txt. Ich habe es mit diesem Code versucht:
1 | #include <iostream> |
2 | #include <fstream> |
3 | using namespace std; |
4 | |
5 | int main(void) |
6 | {
|
7 | char c; |
8 | ifstream Zieldatei; |
9 | Zieldatei.open("C:/temp/test.txt",ios_base::in); |
10 | if(!Zieldatei) |
11 | {
|
12 | cerr<<"Zieldatei konnte nicht geöffnet werden!\n"; |
13 | }
|
14 | while(Zieldatei.get(c)) |
15 | {
|
16 | cout<<c; |
17 | }
|
18 | cin.get(); |
19 | }
|
Es kommt jedes mal der Error: Zieldatei konnte nicht geöffnet werden! Ich weiß nicht mehr, was ich noch ändern soll.
Ja tut sie. Ich seh sie ja wenn ich auf die Festplatte gehe und den Ordner temp öffne^^. Aber irgendwo muss es ja haken.
kann es sein das die Datei bei dir test.txt.txt heist? Windows Anzeige Dateierweiterung lässt grüßen. mach mal auf der Komandozeile ein dir c:\temp
Hast du diesen 'Dateiendungen-ausblenden'-Blödsinn eingeschaltet? Dann würde nämlich die Datei 'test.txt.txt' heißen.. Ansonsten öffne die Datei mit fopen() und lass dir mit strerror() ne anständige Fehlermeldung ausgeben.
Volltreffer Peter. Die Datei war eine txt.txt Datei. Ich Blödhammel hab wohl wieder nicht aufgepasst. Entschuldigt bitte für so einen Mist. Aber danke für eure Hilfe :)
das kommt davon, wenn man die Textdatei mit notepad schreibt und nicht mit dem EMACS.... :-) War doch notepad, oder?
Es würde auch schon genügen, wenn Microsoft endlich diese hirnverbrannte Funktion standardmäßig abstellen würde. Ich kann mich noch dran erinnern, da hat Outlook standardmäßig ausführbare (exe, com) EMail-Anhänge automatisch gestartet.
Sven P. schrieb: > Ich kann mich noch dran erinnern, da hat Outlook standardmäßig > ausführbare (exe, com) EMail-Anhänge automatisch gestartet. Angst! :-( Oder nee, doch nicht. Hab Outlook ja nie benutzt :-)
@L. J. (luke1) Du hast doch schon ein paar Hinweise in dem ursprünglichen Thread bekommen. Das erste was mir da oben uffällt, ist das
1 | ifstream Zieldatei; |
nur für das Lesen funktioniert, für das Schreiben muss es
1 | ofstream Zieldatei; |
sein. Das stand imho auch in dem anderen Thread. Irgendwas wie folgendes suchst du (vermutlich):
1 | #include <iomanip> |
2 | #include <iostream> |
3 | #include <fstream> |
4 | |
5 | using namespace std; |
6 | |
7 | int main ( int argc, char* argv[] ){ |
8 | ifstream srcFile; |
9 | ofstream dstFile; |
10 | char line[128]; |
11 | |
12 | srcFile.open("Datei_1.txt", ios_base::in); |
13 | dstFile.open("Datei_2.txt", ios_base::out); |
14 | |
15 | if(!srcFile) { |
16 | cerr << "srcFile konnte nicht geöffnet werden\n"; |
17 | }
|
18 | if(!dstFile) { |
19 | cerr << "dstFile konnte nicht geoeffnet werden\n"; |
20 | }
|
21 | |
22 | while(srcFile.getline(line,sizeof(line))) { |
23 | cout << "Line = " << line << endl; |
24 | dstFile << line << endl; |
25 | }
|
26 | |
27 | cout << "Irgendeine Taste druecken!" << endl; |
28 | cin.clear(); |
29 | //cin.ignore(256, '\n');
|
30 | cin.get(); |
31 | |
32 | srcFile.close(); |
33 | dstFile.close(); |
34 | |
35 | return 0; |
36 | }
|
Sven P. schrieb: > Ich kann mich noch dran erinnern, da hat Outlook standardmäßig > ausführbare (exe, com) EMail-Anhänge automatisch gestartet. Und bei aktuellen Versionen kam ein Kommilitone nicht mehr an 'gefährlichen' Dateien ran. Seinen Aussagen nach, konnte er sie weder speichern, kopieren oder sonst irgendwas. ;-)
> > Ich kann mich noch dran erinnern, da hat Outlook standardmäßig > > ausführbare (exe, com) EMail-Anhänge automatisch gestartet. > Und bei aktuellen Versionen kam ein Kommilitone nicht mehr an > 'gefährlichen' Dateien ran. Seinen Aussagen nach, konnte er sie weder > speichern, kopieren oder sonst irgendwas. ;-) ihr solltet euch wirklich mal den mit Programmen beschäftigen über die ihr lästert. Ja bei Outlook2000 konnte man die Anhänge direkt starten, aber geht das nicht bei jedem email Programm?. Nachdem sich die genug Leute alles gestartet habe was bei ihnen angekommen ist mussste etwas unternommen werden. Mit einen ServicePack wurden dann die Anhänge in Gruppen eingesteilt( Level1 und Level2 ). Bei Level1 wurde komplett versteckt, Level2 durfte man nur speichern. Und es hat geholfen der Leie hat erstmal keinen Virus mehr direkt gestartet - er öffnet jetzt die Zip datei und startet den Virus dort raus. Aber den Verhalten von Outlook war jederzeit konfigurierbar (in der Registry) für Faule gab es auch kostenlose Tool die das übernommen haben. Ich fand die Lösung zwar auch nicht perfekt aber sie haben halt etwas unternommen. In Kombination mit Exchange konnte die diese Richtline auch Zentral verwalten. Ich bin mit Outlook sehr zufrienden, keine Ahnung was die Leute immer daran zu nörgeln haben. Ich darf jetzt auch Arbeit mit Notes arbeiten - da sieht man estmal was wirklich schlecht ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.