VanQator
0
  • Najlepsze
  • Wszystkie komentarze
j.....0
char pesel[12];

...

for (int i = 0; i < (sizeof(pesel)/sizeof(pesel[0])) - 1; i++)

@VanQator: nawet tego nie skomentuję ( ͡° ʖ̯ ͡°)
2
longstar
longstar
@VanQator: poki co to wywala na ofcode 404 ( ͡° ͜ʖ ͡°)
1
lionbest
@VanQator: opie, przeczytałeś moją ostatnią odpowiedź w poprzednim pytaniu?
1
lionbest
1
lionbest
@VanQator: Ale w sumie fajny kawałek kodu do trolowania ludzi wyszedł ;-D

int jp2 = 0xFF373331;
{
char x = '2';
std::cout << "x = " << atoi(&x) << '\n';
}
1
Defined
@b33zon: Racja, w przypadku C++ lepiej korzystać z nowszych funkcji, jednak w C sscanf moim zdaniem będzie najlepszy
1
VanQator
@lionbest: a działa?
0
VanQator
0
VanQator
@lionbest: chodziło jednak o to, że spoj nie wciąga domyślnie do przestrzeni nazw std funkcji atoi, wystarczyło podpiąć bibliotekę stdlib.h
0
lionbest
@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';
0
VanQator
@lionbest: Tzn. nwm po co mam go pomijać. Wczytuję do tablicy 11 znaków. Od tej pory strumień wejścia jest mi niepotrzebny.
0
lionbest
@VanQator: A kolejna iteracja pierwszej pętli? Co zrobi?
0
VanQator
@lionbest: poprosi o wczytanie peselu, bo cin domyślne ignoruje znak nowej linii
0
lionbest
@VanQator: W sumie racja X-D dalej nie wiem, po co nadpisujesz 11 znak w peselu....
0
VanQator
@lionbest: bo ktoś mi wczoraj napowowiadał jakichś bzdur xd
0
lionbest
@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';
0
VanQator
@lionbest: http://www.cplusplus.com/reference/cstdlib/atoi/

The string can contain additional characters after those that form the integral number, which are ignored and have no effect on the behavior of this function.
0
lionbest
@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'.
0
VanQator
@lionbest: Po co mam wiedzieć jaki jest kolejny znak w pamięci? Może być to dowolny znak z zakresu -128 do 127 z wyłączeniem cyfr. '\0' to znak kodu ASCII.
0