dodatkowe znaki przy printf napisu

dodatkowe znaki przy printf napisu
RO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
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?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

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

RO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
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

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
1
Kopiuj
int dlugosc_tekstu = wczytywanie_tekstu(&wczytywany_tekst[0]);
char przerobiony_tekst[dlugosc_tekstu];

I wstaw kod do posta.

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
0
Kopiuj
        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 ;)

RO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

super! dzięki wielkie

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
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?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.