Wpis z mikrobloga

@VanQator: może przeczytałeś ale nie zrozumiałeś bo dalej nie pomijasz znaku nowej lini., a kompletnie nie wiem co ci przyszło do głowy by to wstawić....

pesel[11] = '\n';
  • Odpowiedz
@VanQator: Aha funckja atoi przyjmuje ciąg znaków zakończonych znakiem '\0', a podajesz mu tylko jeden znak, który nim nie jest. Zamień najlepiej na:

tab[i] = pesel[i] - '0';
  • Odpowiedz
@VanQator: Skąd wiesz, jaki jest kolejny znak w pamięci? Pomijając fakt że to jest Undefined Behavior to poporstu może wczytać kolejną cyferkę z pamięci, musisz zrobić co najmniej tak:

char buf[2] = { pesel[i], '\0' };
Przytoczony fragment odnosi się, że ostatnia cyfra może być czymkolwiek poza 0-9, niekoczniecznie '\0'.
  • Odpowiedz
@lionbest: Ok, masz rację, zwracam honor. W sumie to przecież, równie dobrze akurat w pamięci może znaleźć się nawet cyfra, która będzie uwzględniona jako pozycja odczytywanego ciągu, co też zafałszuje wynik.
  • Odpowiedz