我正在C中编写BCD(二进制编码的十进制)并负责编写不同的bcd函数。C中的BCD(二进制编码的十进制)
我需要将整数i编码到大小为n的缓冲区char * s中。该函数在成功时返回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[])
和字符func(char *x)
他们会是同样的事情?所以你可以将它们看作一个char数组。如果它在函数定义之外char x[];
将是一个char数组,并且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 2011-02-08 00:53:46
`itoa`仅适用于MSVC++(AFAIK)。这不是标准C. – 2011-02-08 00:54:29
这不是标准的C,但它被广泛实施。 – payne 2011-02-08 01:12:09