in einem Pfad alle \ durch \\ ersetzen



  • Hallo!

    Um die WinAPI-Funktion CreateProcess zu benutzen, muss ich in jedem zu übergebenen Pfad (z.B. C:\windows\system32\notepad.exe) die \ durch \\ ersetzen. Bevor ich mich da ransetze, wollte ich fragen, ob es da nicht vielleicht schon eine C-Funktion gibt, die das macht, oder ob ich es tatsächlich selber schreiben muss.
    Meine Idee wäre dann mit strchr zu arbeiten, oder was würdet ihr machen?

    Danke!



  • Gayson schrieb:

    Um die WinAPI-Funktion CreateProcess zu benutzen, muss ich in jedem zu übergebenen Pfad die \ durch \\ ersetzen.

    das mußt du natürlich nicht! das ist in c/c++ nur bei stringkonstanten nötig, da der compiler das backslash als escape-zeichen interpretiert.



  • Warum funktioniert denn dann der folgende Code nur so, und nicht mit einfachen \?

    #include <stdio.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <windows.h>
    
    main()
    {
    	LPTSTR pfad;
    	STARTUPINFO SUInfo;
    	PROCESS_INFORMATION PInfo;
    
    	//StartupInfo
    	ZeroMemory( &SUInfo, sizeof( SUInfo ));
        SUInfo.cb=sizeof( SUInfo );
    
        //ProcessInfo
    	ZeroMemory( &PInfo, sizeof( PInfo ));
    
    	CreateProcess(NULL, "C:\\windows\\system32\\notepad.exe", NULL, NULL, NULL, NULL, NULL, NULL, &SUInfo, &PInfo);
    
    	WaitForSingleObject(PInfo.hProcess, INFINITE);
    
    	printf("fertig!");
    }
    

    Habe ich irgendwas falsch gemacht?



  • Gayson schrieb:

    Warum funktioniert denn dann der folgende Code nur so, und nicht mit einfachen \?

    Das hat Konfusius doch gesagt. Wenn der String im Quellcode steht, musst du die doppelten Backslashes machen. Aber sonst nicht



  • Aha, verstehe, stimmt, klappt.
    Danke!!


Anmelden zum Antworten