dodatkowe znaki przy printf napisu

0

http://pastebin.com/wpvWNw7x
kod cezara. Ogólny zarys działania programu.
Wczytuję tekst z klawiatury do tablicy znakow: wczytywany_tekst[100]. Przy okazji zliczam jego dlugosc: liczba_wczytanych_znakow. Następnie przepisuję już odszyfrowany tekst do nowej tablicy znaków: char przerobiony_tekst[dlugosc_tekstu].

Problem pojawia się przy wypisywaniu: printf("%s, przerobiony_tekst). Na końcu odszyfrowanego napisu czasem wyrzucany jest znak: $, znak ascii254, czy (.

wie ktos dlaczego tak się dzieje?

2

Napis musi się kończyć znakiem '\0'

0

a wskazałbyś mi proszę w którym miejscu zignorowałem ten fakt? Bo przejrzałem kod pod tym kątem i dalej nie wiem gdzie jest błąd

1
int dlugosc_tekstu = wczytywanie_tekstu(&wczytywany_tekst[0]);
char przerobiony_tekst[dlugosc_tekstu];

I wstaw kod do posta.

0
        printf(" Wpisz tekst: ");
        scanf("%99s", buffor);
        sscanf(buffor, "%s%n", wczytywany_tekst, &liczba_wczytanych_znakow);

powiedz mi gdzie tutaj dodajesz do wczytywany_tekst "nul terminator" ( w sensie '\0')

bo po tym kodzie od razu juz robisz jakies operacje na wczytywany_tekst. Wiec przy wypisuwaniu wczytywany_tekst moze znasz jego dlugosc, ale printf nie zna. Wiec wyswietla dopoki nie trafi na nul terminator ;)

0

super! dzięki wielkie

2

rzeczywiście błąd nie jest tam gdzie wskazuje reszta. Ale dalej nie rozumiem co robię źle przy deklaracji tablicy przerobiony_tekst

Przecież dlugosc_tekstu to liczba znaków w tekście wejściowym, czyli tablica przerobiony_tekst ma dokładnie tyle miejsc. No to gdzie jest dodatkowe miejsce na znak '\0'?
Nie mówiąc już o tym, gdzie masz operację dodania tego znaku do przerobiony_tekst?

1 użytkowników online, w tym zalogowanych: 0, gości: 1