Ich bin sehr neu in C und arbeite an einem Dienstprogramm, das Ordner nach doppelten Dateien durchsucht und dann einige Dinge für sie tut. Wenn ich die Liste der doppelten Dateinamen habe, muss ich eine Zeichenfolge mit dem vollständigen Pfad und dem Dateinamen erstellen, um die Dateien zu bearbeiten, aber ich erhalte jedes Mal einen Fehler, wenn ich versuche, einen \ an den Pfad anzufügen, aber der Fehler nicht wenn ich das überspringe. Hier ist eine vereinfachte Version des Problems Code:Erstellen eines Pfades aus Zeichenfolgen in C
char *TARGET1 = ".";
char *TARGET2 = ".\\test";
char *PATH_SEP = '\\';
char *folder1_files[filecount1]; // These arrays are populated with file
char *folder2_files[filecount2]; // names elswhere in the code
int l = 0; // The counter for the loop that is comparing the filenames
char buffer[1024];
strcpy(buffer, TARGET2);
printf("Building the path now...\n");
//strcat(buffer, PATH_SEP);
strcat(buffer, folder2_files[l]);
printf("Path: %s\n", buffer);
Wenn ich die dritte Zeile von unten verlassen Kommentar gesetzt, das Programm abgeschlossen ist und ich erhalte die folgende Ausgabe:
Pfad gebaut! Pfad:. \ Testfile3.txt
Wenn ich es Kommentar-, bekomme ich diesen Fehler: Zugriffsverletzung Leseort 0x0000005C
Kann jemand zeigen, wo dies nicht in Ordnung ist? Gibt es eine Standardmethode zum Erstellen von Pfaden in C?
* Namen irgendwo im Code * ... wo? poste das auch. Verwenden Sie stattdessen 'snprintf()', das ist einfacher und sauberer. –
Willkommen bei Stack Overflow. Bitte lesen Sie die [Über] und [Ask] Seiten bald, aber noch wichtiger, lesen Sie bitte, wie man ein MCVE ([MCVE]) erstellen. Beachten Sie, dass 'char * folder1_files [filecount /];' ein Syntaxfehler ist; meinst du "filecount1"? –
dritte Zeile von unten ist int l = 0; Wenn Sie es kommentieren, hätte es einen Kompilierzeitfehler bei strcat (buffer, folder2_files [l]) erzeugt; mit l undefined –