atoi(argv [1])的返回值始终为0

Bin*_* Lu 3 c atoi argv

我遇到了关于返回值的问题atoi().

我想将charin命令行参数argv[1]转换为int类型并将其打印出来.

这是我的代码.

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

int main(int argc, char *argv[])
{
    int i;
    //print the char in *argv[]
    for(i = 0; i < argc; i++)
    {
            fprintf(stdout, "Arg %d: %s\n", i, argv[i]);
    }

    if (argc > 1)
    {
        i = atoi(argv[1]);      //convert char to int
        fprintf(stdout, "Int version of 1st arg: %d\n", i);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我用gcc编译它并运行它 ./a.out a b c

其他结果是正确的,但atoi()结果始终显示为

Int version of 1st arg: 0
Run Code Online (Sandbox Code Playgroud)

你能就这个话题给我一些建议吗?

Luc*_*ore 5

我的建议是,如果要将字符串转换为a,请将int实际转换为a的字符串作为参数提供int.你的论点是:

 ./a.out a b c
Run Code Online (Sandbox Code Playgroud)

所以没有注意.你有什么期望?您认为a转换为什么int是什么?

  • @Takumar你事先读过'atoi`的文档吗? (3认同)