Я работаю над BCD (двоичным кодированным десятичным разрядом) в C и отвечает за запись различных функций bcd.BCD (двоичное кодированное десятичное число) в C
Мне нужно кодировать целое число i в буфер char * s размера n. Функция возвращает 0 при успехе или -1 в случае переполнения (для кодирования i требуется буфер больше n).
Вот функция: int bcd_encode(int i, int n, char *s)
и образец ввода: assert(bcd_encode(a, 128, s) == 0);
Я пишу код для функции bcd_encode и поправьте меня, если я ошибаюсь, но я верю в функции и только в если у вас должно было быть func(char x[])
и char func(char *x)
они были бы такими же? Таким образом, вы можете рассматривать оба из них как массив символов. Если бы это было вне определения функции, то char x[];
был бы массивом символов, а char *x;
- указателем.
int bcd_encode(int i, int n, char *s){
int j = 0;
s = itoa(i, s, n+1);
}
Но это возвращает предупреждение «назначение делает указатель из целого числа без приведения» и неопределенного символа itoa. Я пробовал несколько разных вариантов:
* s = itoa (i); s = itoa (i); s = itoa (i, s, n + 1);
Любая помощь будет оценена по достоинству. Заранее спасибо!
Может быть, вы хотите вернуть 'int' в конце функции? – Peyman
'itoa' является только MSVC++ (AFAIK). Это не стандарт C. –
Это не стандарт C, но он широко применяется. – payne