尝试在Linux中使用ltoa编译代码时抛出错误

时间:2012-01-23 13:34:15

标签: c

当我尝试编译代码时出现编译错误,如下所示

#include <stdlib.h>

main()
{
    int val = 10;
    char buff[10];
    char *ptr;
    ptr = ltoa(val,buff,10);
    printf("The val is %s\n",buff);
}

我收到如下所示的编译错误:

[mcanj@varaprada ~]$ cc -g samp2.c
samp2.c: In function `main':
samp2.c:8: warning: assignment makes pointer from integer without a cast
samp2.c:11:2: warning: no newline at end of file
/tmp/ccifnKFx.o(.text+0x23): In function `main':
/home/mcanj/samp2.c:8: undefined reference to `ltoa'
collect2: ld returned 1 exit status.

请告诉我如何解决此问题。谢谢和问候。

4 个答案:

答案 0 :(得分:3)

它是itoa()而不是ltoa(),但即使itoa()也不是标准库功能。
如果您希望自己的程序可移植,请使用C99中的sprintf()snprintf()

答案 1 :(得分:2)

它是itoa,而不是ltoa。只需更改通话即可。

答案 2 :(得分:1)

请参阅http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

Portability
This function is not defined in ANSI-C and is not part of C++, but is 
supported by some compilers.

http://www.strudel.org.uk/itoa/

Arrgghh C / C ++!似乎itoa()不是ANSI C标准并且不起作用 在Linux上使用GCC(至少我正在使用的版本)。这样的事情令人沮丧,特别是如果您希望您的代码在不同的平台上工作(Windows / Linux / Solaris /等等)。

答案 3 :(得分:1)

C没有itoaltoa个函数,C具有atoi函数,用于转换指向int表示的字符串。

如果要使用它,必须实现该功能。