badboy11 Opublikowano 13 Września 2004 Zgłoś Opublikowano 13 Września 2004 #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?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 13 Września 2004 Zgłoś Opublikowano 13 Września 2004 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}; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
badboy11 Opublikowano 15 Września 2004 Zgłoś Opublikowano 15 Września 2004 no przeciez .. :) az dziwne ze i tak rzadko sie wywalalo dzieki! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...