【发布时间】:2011-06-23 03:25:59
【问题描述】:
我正在用 C 语言编写 BCD(二进制编码十进制)并负责编写不同的 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[]) 和 char func(char *x) 时才相信一个函数,它们是同一回事?因此,您可以将它们都视为 char 数组。如果它在函数定义之外,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? -
itoa仅适用于 MSVC++ (AFAIK)。这不是标准的 C。 -
它不是标准的 C,但已被广泛实施。
标签: c string type-conversion integer prototype