2012-07-17 111 views
0

我想在我的程序中使用atoi函数,但是我发现它不起作用。我怎样才能让atoi在我的ADS项目中工作?

#include <ctype.h> 
int value; 
value=atoi(buf); 

char buf点, “1000” 或类似的东西,通过\0终止。我已经检查过了。 但值总是为零。我试过strtol(),但我得到了同样的错误。

  1. 我的ADS(ARM Developer Suit)是v1.2(s3c2440)。我可以在armlib路径(c_t_xx.l)中找到这些库。
  2. 我使用axd调试模式,所以我可以跟踪我的代码。我发现"bl
    __rt_ctype_table"
    ,所以我认为asm代码链接正确。

请给任何建议来解决这个问题。

+0

您的缓冲区不包含1000,然后。 – zmbq 2012-07-17 08:35:39

+0

'atio'在'stdlib.h'中,你可以给我们一个示范吗? – 2012-07-17 08:36:52

+0

buf来自哪里?如果你声明它,那就是这个缓冲区中的值是随机的。 – petermlm 2012-07-17 08:37:06

回答

1

ARM可能对字符串函数有问题,你没有提及它是否返回一个值,它是不正确的(我听说它是​​一个错误,它是更好的,你应该自己写的函数)或没有价值所有。 反正看一下手臂文章中,我认为这是解决方案 - ARM article about string functions

0

下面的代码应该工作,

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
     int i; 
     char buff[5] = "1000\0"; 
     i=atoi(buff); 
     printf("i=%d\n", i); 
     return 0; 
} 

#./a.out 
#i=1000 
+0

是的,这个代码在任何linux平台都能正常工作,但是在我的arm平台(usOSII)中,广告作为compiler.it不再适用。 – 2012-07-17 08:45:30

+1

确保你已采取以下[链接](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3536.html); – lxusr 2012-07-17 08:57:53

相关问题