Anfänger: readdir/opendir implementiert



  • Ja!
    Der Code:

    [cpp]
    #include "stdafx.h"
    
    #include <string.h>
    #include <dirent.h>
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    
    struct dirent* d;
    
    char cmd [32];
    char parameter[128];
    struct dirent *path;
    DIR *dir;
    
    void file_move(){
    	char filea[128], fileb[128];
    	int success;
    	dir = opendir(".");
    	path = readdir(dir);
    	printf(path->d_name);
    	printf("FILE TO MOVE> ");
    	scanf("%s", filea);
    	printf("NEW PATH> ");
    	scanf("%s", fileb);
    	success = rename(filea, fileb);
    	if(success == 0){
    		printf("The file %s was successful renamed to %s\n", filea, fileb);
    	} else {
    		printf("The file %s was not found or the file %s already exist\nCould not move file %s to %s", filea, fileb, filea, fileb);
    	}
    }
    
    int main(int argc, char* argv[])
    {
    	while(1){
    		printf("\nCOMMAND> ");
    		scanf("%s", cmd);
    		if( (0 == stricmp("quit", cmd)) || (0 == stricmp("exit", cmd))){
    			return 0;
    		} else if( 0 == stricmp("move", cmd)){
    			file_move();
    		}
    	}
    }
    [/cpp]
    


  • und wieso schreibst du nicht, wo dein Problem ist?

    readdir(),opendir() implementieren? Die sind schon implementiert. Du willst sie benutzen und das tust du in deinem Beispiel.



  • Also: Wenn ich das Prog. kompilieren will, kommt folgende Fehlermeldung:
    --------------------Konfiguration: tdos - Win32 Debug--------------------
    Kompilierung läuft...
    tdos.cpp
    Linker-Vorgang läuft...
    tdos.obj : error LNK2001: Nichtaufgeloestes externes Symbol _readdir
    tdos.obj : error LNK2001: Nichtaufgeloestes externes Symbol _opendir
    Debug/tdos.exe : fatal error LNK1120: 2 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    tdos.exe - 3 Fehler, 0 Warnung(en)

    Wie kann ich jetzt die externen Symbole _readdir und _opendir implementieren?



  • Du wirst wahrscheinlich dem Linker noch irgendwo mitteilen müssen, dass er eine bestimmte .lib-Datei noch mit hinzulinken soll. Wo das bei deinem Compiler geht weiss ich allerdings nicht, da musst Du mal selber nachschauen (in der Onlinehilfe oder so)



  • Na bravo...
    Ich hab MICROSOFT Visual C++
    Das kann was dauern...aber ich mein, man müsste nur was im Quellcode ändern
    egal! Ich werd erstmal die lib's überprüfen!



  • War doch nicht so schwer 🙄
    Ich hab SÄMTLICHE LIB'S eingebunden...immernoch der selbe Fehler...



  • Und wer hat dich auf die blöde Idee gebracht, opendir/readdir mit VC++ verwenden zu wollen?



  • Nunja...der EINZIGE Kompiler der auf meinem System läuft (warum auch immer) ist VC++!
    Früher hatte ich DJGPP...aber der läuft auf XP mit NTFS nicht!



  • Hallo,
    wirf doch mal ein Blick in die WinAPI bzw. MFC-FAQ dort findest du alternative Wege aufgezeigt.



  • der djgpp läuft übrigens auf xp, wie kommst du auf das gegenteilige? 😉

    www.delorie.com



  • DJGPP findet den Linker nicht...
    Wenn ich DJGPP auf 98 installiere funktioniert das OHNE PROBLEME!
    Ich hab mir jetzt nochmal den Borland "gekrallt"
    mal gucken, ob der läuft



  • du musst natürlich den passenden runterladen, siehe link. nicht irgendeinen von cd oder einen alten 😉
    zum zweiten: du musst die variablen schon setzten. also faq des compilers lesen.

    so long.



  • ps: und was soll schon wieder ein anderer compiler?

    wieso hörst du nicht auf hume sikkins ratschlag und liest mal in der faq?
    hier zum bleistift:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39396&sid=b7eb2768168f517934633d71439c84f6
    dann klappts auch mit dem studio 😉

    und vergiss nicht, die afx brauchst du nicht, du brauchst die windows.h.

    so, nu viel spaß.



  • windows.h?
    Das Programm wird ne Konsolenanwendung...da braucht man doch keine windows.h...oder?



  • in der konsole gibts die windows.h.

    die von dir gewünschten funktionen gibt es jedoch nicht in standard c++.

    entweder du fährst einen compiler, der aus kompatibilitätsgründen die dos directory funktionen dabei hat, oder du nutzt winapi.
    das geht auch auf der konsole.



  • Der VC++ gibt immernoch die selbe Meldung raus!
    DJGPP gibt folgendes raus:

    Compiling: tdos.cpp
    no errors
    Creating: tdos.exe
    Error: c:/djgpp/bin/ld.exe: cannot find -lstdcxx
    Error: collect2: ld returned 1 exit status
    There were some errors

    ...ok...



  • für c++ musst du mit gxx.exe compilieren, nicht mit gcc.exe.
    sonst findet er die stdgcc nicht.

    das war aber unter win98 genauso.



  • hmm...die gxx.exe gibt mir ja auch den fehler raus...gcc.exe aber auch!
    Außerdem findet er lstdcxx nicht!



  • ICH HABS!
    ich musste die Dateien im Verzeichnis C:\DJGPP\LIB\GCC-LIB\DJGPP\
    nach C:\DJGPP\LIB verschieben! 🙄
    Und das Programm lässt sich jetzt auch kompilieren!
    THX THX THX


Anmelden zum Antworten