Skocz do zawartości
badboy11

C -strlen ...

Rekomendowane odpowiedzi

#include <stdio.h>

#include <string.h>

 

int main (void) {

 

char ch, zdanie[200];

int i;

 

printf("wpisz zdanien");

 

for(i=0; (ch=getchar()) != 'n' && i<200; i++) {

zdanie=ch;

}

putchar(ch);

 

printf("strlen(zdanie)-1= %d t i-1=%d n", strlen(zdanie)-1, i-1); // TEST

 

for(i=i-1; i>=0; i--)

putchar(zdanie);

printf("n");

return 0;

}

 

witam!!

to powyzej to programik to wyswietlania pobranego zdania wspak.

nurtuje mnie jeden problem- dlaczego w linijce TEST obie wartosc nie zawsze sie zgadzaja?? jesli zamiast pogrubionego fragmetnu w petli for wstawie "i=strlen(zdanie)-1" to czasami sie ... pieprzy, czemu??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na poczatku tablice zdanie masz niezaincjalizowana, wiec moga tam byc (i prawie napewno sa) przypadkowe smieci z pamieci. Potem wpisujesz do niej iles tam liter, smieci zostaja.

strlen sprawdza do pierwszego NULL'a w tej tablicy, ktorego moze w niej nawet nie byc (strlen bedzie wiec ryl dalej po pamieci az znajdzie), wiec wartosc zwrocona przez ta funkcje ma prawo odbiegac od rzeczywistosci.

Tak wiec, albo dostaw po ostatnim znaku NULL'a albo poprostu zadaklaruj ja tak:

char zdanie[200] = {0};

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...