Я пишу программу, которая преобразует шестнадцатеричные значения в числовое значение , для этого я сделал целочисленную функцию htoi (char s [i] ) принимает массивы символов.
Я подключаю массив char с помощью getchar (), чтобы позволить пользователю вводить символы, которые затем присваиваются массиву в моем коде, и указанный массив затем используется в качестве аргумента htoi, однако компилятор жалуется, что htoi использует аргумент с указателем без приведения и хочет char.
Я попытался изменить массивы, такие как char s [], на int s [i], потому что char - это просто меньшее целое число, верно? Итак, когда я изменяю его на int, компилятор потом жалуется, что htoi {s [i]) (теперь s [] является int) делает указатель из целого числа без приведения.
Итак, я понимаю, что итератор в массиве - это не что иное, как указатель на элемент в массиве, хорошо. Отлично, поэтому я убираю и я. , , Ожидается выражение перед токеном ']'.
Я исчерпал свой инструментарий.
#include <stdio.h>
#define YES 1
#define NO 0
#define EXIT '~'
int htoi(int s[]);
int main(){
int i, c = 0;
int s[i];
for (i = 0; (c = getchar()!= EXIT); i++){
s[i] = c;
if(c == '\t' || c == '\n' || c == ' '){
htoi(s[]);
}else{
putchar(c);
}
}
}
int htoi(int s[]){
int isHexidecimal;
int hexdigit;
int n;
int i = 0;
if(s[i] == '0'){
i++;
if(s[i] == 'x' || s[i] == 'X')
i++;
}
isHexidecimal = YES;
while(isHexidecimal == YES){
if(s[i] >= '0' && s[i] <= 9){
hexdigit += s[i] - '0';
i++;
}else if(s[i] >= 'a' && s[i] <= 'f'){
hexdigit += s[i] - 'a' + 10;
i++;
}else if(s[i] >= 'A' && s[i] <= 'F'){
hexdigit += s[i] - 'A' + 10;
i++;
}else{
isHexidecimal = NO;
}if(isHexidecimal == YES) {
n = n * 16 + hexdigit;
}else {
n += 0;
}
}
return n;
}
Я ожидаю, что основной метод запустит функцию getchar (), которая назначена переменной c, затем назначит переменную c массиву, а затем передаст указанный массив в htoi.
htoi вернет шестнадцатеричное в целочисленное значение или «0», если я не введу правильное шестнадцатеричное значение, или вернет шестнадцатеричное значение и завершится в результате цикла, в котором не введено правильное шестнадцатеричное значение.