C 我如何使atoi在我的广告项目中工作?

C 我如何使atoi在我的广告项目中工作?,c,arm,ctype,C,Arm,Ctype,我想在我的程序中使用atoi函数,但我发现它不起作用 #include <ctype.h> int value; value=atoi(buf); #包括 int值; 值=atoi(buf); char buf指向“1000”或类似值,以\0结尾。我查过了。 但该值的计算结果始终为零。我已经尝试了strtol(),但是我得到了相同的错误 我的ADS(ARM开发者套装)是v1.2(s3c2440)。我可以在armlib路径(c_t_xx.l)中找到lib 我使用axddebug模式

我想在我的程序中使用
atoi
函数,但我发现它不起作用

#include <ctype.h>
int value;
value=atoi(buf);
#包括
int值;
值=atoi(buf);
char buf
指向“1000”或类似值,以
\0
结尾。我查过了。 但该值的计算结果始终为零。我已经尝试了strtol(),但是我得到了相同的错误

  • 我的ADS(ARM开发者套装)是v1.2(s3c2440)。我可以在armlib路径(c_t_xx.l)中找到lib
  • 我使用
    axd
    debug模式,以便跟踪代码。我找到了
    “bl
    __rt_ctype_table“
    ,因此我认为asm代码链接正确

  • 请给出解决此问题的建议。

    ARM可能在字符串函数方面有问题,您没有提到它是否返回值并且它不正确(我听说这是一个bug,最好您自己编写函数),或者根本没有值。
    无论如何,看看arm的文章,我认为这是解决方案-

    以下代码应该可以工作

    #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
    
    #包括
    #包括
    int main()
    {
    int i;
    字符buff[5]=“1000\0”;
    i=atoi(浅黄色);
    printf(“i=%d\n”,i);
    返回0;
    }
    #/a.out
    #i=1000
    
    那么,您的缓冲区不包含1000。
    atio
    stdlib.h
    中,您能给我们演示一下吗?buf首先来自哪里?如果你声明了它,那么缓冲区中的值就是随机的。谢谢。buf没有错误(在axd中调试)。因为没有操作系统工作(在ucOSII上),演示不那么容易。也许那些使用广告并为arm(S3C2440)编写代码的人会提供有用的帮助。顺便说一句,strtol(buf,NULL,10)也有同样的错误。是的,这段代码在任何linux平台上都可以正常工作,但在我的arm平台(usOSII)上,以ads作为编译器。它不再工作了。请确保您已经使用了以下[link]();