Mam znacznie dłuższą tablicę znaków, że zamieniam się w liczby całkowite, ale nie mogę zrozumieć, dlaczego zachowuje się dziwnie w niektórych miejscach.C zamieniające tablice znaków na int zachowujące się dziwnie
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char x[60] = "08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08";
printf("%lu\n\n", strlen(x));
for (int i = 0; i < strlen(x); i+=3) {
char num[2];
num[0] = (char)x[i];
num[1] = (char)x[i+1];
printf("%d, ", atoi(num));
}
}
Wyjście:
8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 500, 773, 916, 89,
Wszystko jest super aż ..... 500, 773, 916, 89 ... co się dzieje?
Argumentem "atoi" musi być ciąg znaków. Nie podałeś ciągu. Łańcuch jest ciągiem znaków, po którym następuje bajt zerowy. –
'num [2]' może przyjąć tylko 1 znak, ponieważ drugi będzie "\ 0" '' ' – CinCout
działa idealnie w moim systemie, której wersji' gcc' używasz? –