为了账号安全,请及时绑定邮箱和手机立即绑定

结果编译时提示信息错误,为什么?

结果编译时提示信息错误,为什么?

暮色呼如 2023-03-03 18:14:31
我编写了个回文数的程序:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int i, j;int m, n;int f = 1;char c[10];for (i=1; i<257; i++){m = i * i;itoa(m, c, 10);n = strlen(c);for (j=0; j<n/2; j++){if (c[j] != c[n-1-j]){f = 0;break;}}if (f){printf ("%d\n", i);}}return 0;}结果编译时提示信息:/tmp/cc4rfntR.o: In function `main':jc.c:(.text+0x44): undefined reference to `itoa'collect2: ld returned 1 exit status请问这是为什么??请高手指教,小弟不甚感激!!!
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

附加 gcc 参数 -lxxxx 方式调用提供 itoa 函数接口的库。
不过你需要确定这个xxxx 应该是哪个才行。

你现在提示是 undefined reference 而不是提示函数未定义。所以应该代码没问题,是编译环境的函数库调用有问题。
你怎么装的开发环境?不会是装了头文件没装对应 so 吧?

查看完整回答
反对 回复 2023-03-08
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

#include <stdlib.h>

int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
long long atoq(const char *nptr);

linux下面没对应的好像,我man 没有查到.

给你直接找到一个实现,你放到自己代码里面就可以了

void itoa ( unsigned long val, char *buf, unsigned radix )  
{  
char *p; /* pointer to traverse string */  
char *firstdig; /* pointer to first digit */  
char temp; /* temp char */  
unsigned digval; /* value of digit */  

p = buf;  
firstdig = p; /* save pointer to first digit */  

do {  
digval = (unsigned) (val % radix);  
val /= radix; /* get next digit */  

/* convert to ascii and store */  
if (digval > 9)  
*p++ = (char ) (digval - 10 + 'a '); /* a letter */  
else  
*p++ = (char ) (digval + '0 '); /* a digit */  
} while (val > 0);  

/* We now have the digit of the number in the buffer, but in reverse  
order. Thus we reverse them now. */  

*p-- = '\0 '; /* terminate string; p points to last digit */  

do {  
temp = *p;  
*p = *firstdig;  
*firstdig = temp; /* swap *p and *firstdig */  
--p;  
++firstdig; /* advance to next two digits */  
} while (firstdig < p); /* repeat until halfway */  
}

 


查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信