@Shalom, dziękuję Ci bardzo za Twój post. Nie pomyślałem o tym i stąd ten błąd. Teraz wywala mi już tylko na zwalnianiu sciezkawej i sciezkawyj - czy dobrze rozumiem, że chodzi o to, że przy łączeniu stringów tablica charów wychodzi poza zaolokowane miejsce, bo nie realokowałem go?
Próbowałem zrobić coś takiego:
strcat(sciezkawej, "/"); //dodaj ukosnik w razie czego
tmp = realloc(sciezkawej, (strlen(nazwawej)) * sizeof(char));
sciezkawej = tmp;
strcat(sciezkawej, nazwawej); //polacz dwa stringi
tmp = NULL;
Ale niestety dodaje mi zawartość nazwawej poza zaolokowany obszar pamięci. Hmm, czy można prosić o jakąś wskazówkę? ;-)
Dziękuję bardzo za odpowiedzi. @_13th_Dragon, dzięki za minimalizację kodu i w ogóle, ale niestety tak ma być jak jest - jest to ćwiczenie z programowania, które mam do napisania i ścieżka musi być podawana osobno. Wiem, dziwne, bez sensu (tzn. no, ma to jakiś sens, pewnie chodzi o to, by się nauczyć funkcji z biblioteki string.h) - ale tak ma być i już.
PS A, aktualnie w pętli for jeden z ifów wygląda tak:
if (strcmp(argv[i], "-FIN") == 0) {
nazwawej = malloc((strlen(argv[i + 1]) + 1) * sizeof(char)); //alokowanie pamieci
strcpy(nazwawej, argv[i + 1]); //wczytanie nastepnego argumentu do zmiennej
//printf("nazwej %s\n", nazwawej); //test
}
Okazuje się, że to jednak zwalnianie nazwawej i nazwawyj tworzy błędy z tego co widzę w debuggerze...