Привет, я пытаюсь преобразовать char в int. У меня есть массив символов, который был введен через scanf
, «10101», и я хочу установить элементы массива int, равные этим элементам массива char.Кастинг char массива в массив int с использованием atoi
Пример ввода:
char aBuff[11] = {'\0'};
int aDork[5] = {0};
scanf("%s", aBuff); //aBuff is not equal to 10101, printing aBuff[0] = 1, aBuff[1] = 0 and so on
Теперь я хочу aDork[0]
равным aBuff[0]
, который был бы 1
.
Ниже приведено то, что у меня есть.
//seems to not be working here
//I want aDork[0] to = aBuff[0] which would be 1
//But aDork[0] is = 10101 which is the entire string of aBuff
//aBuff is a char array that equals 10101
//aDork is an int array set with all elements set to 0
int aDork[5] = {0}
printf("aBuff[0] = %c\n", aBuff[0]); //value is 1
aDork[0] = atoi(&aBuff[0]); //why doesnt this print 1? Currently prints 10101
printf("aDork[0] = %d\n", aDork[0]); //this prints 1
printf("aBuff[1] = %c\n", aBuff[1]); //this prints 0
printf("aBuff[2] = %c\n", aBuff[2]); //this prints 1
Кастинг - это принудительное преобразование типа. Не разбирайте, как 'atoi'. – Deduplicator
поэтому, если я хочу, чтобы каждый элемент массива char стал литералом int 1 или int 0, как я могу это достичь? – Yawn
разница между номером char и номером int (одной цифры) равна 0x30 ('0'), поэтому: aDork [0] = aBuff [0] - '0'; aDork [1] = aBuff [1] - '0'; и т. д. – user3629249