stdlib.h与atoi()函数无法正常工作

时间:2014-04-15 18:14:04

标签: c

在我的程序中,我正在使用atoi()函数从argv中提取int。当我使用

#include <stdlib.h>

我收到以下错误:

cachesim.c:20: warning: passing argument 1 of ‘atoi’ from incompatible pointer type

但是,如果我不包含stdlib.h,我根本没有收到错误,我的代码正常运行。这是为什么?

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

main(int argc,int ** argv){

    if(argc == 0){
            int blk = 32;

            int i;
            for (i = 1; i < argc; i++){
                    if (strcmp(argv[i], "-b") == 0){

                            if (i + 1 <= argc - 1)
                                    blk = atoi(argv[i+1]);
                    }

            }
    } }

2 个答案:

答案 0 :(得分:3)

变化:

main(int argc, int **argv){ 

int main(int argc, char *argv[]){

您之前的声明不是main的可接受声明,atoi需要char *类型的参数。

答案 1 :(得分:0)

argv应该是一个字符数组,你必须读取字符,然后将它们转换为int。

另外,是什么:

if(argc == 0)

如果你没有参数?这应该永远不可能,因为程序名称作为参数传递。

请参阅:

What does int argc, char *argv[] mean?

你也没有在正确的范围内声明int blk,当你离开if(argc == 0)语句时,变量blk将会消失。