2012-07-17 155 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

相關問題