stdlib.h 不能按预期使用 atoi() 函数

问题描述 投票:0回答:2

在我的程序中,我使用

atoi()
函数从
int
中提取一个
argv
。当我使用:

#include <stdlib.h>

我收到以下错误:

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

但是,如果我不包含 stdlib.h,我不会收到任何错误,并且我的代码可以正常运行。这是为什么?

#include <stdlib.h>
#include <stdio.h>
int 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]);
            }
        }
    }
}
c atoi c-standard-library
2个回答
3
投票

变化:

main(int argc, int **argv){ 

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

您之前的声明不是

main
的可接受声明,并且
atoi
需要一个
char *
类型的参数。


0
投票

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

另外,什么是:

if(argc == 0)

如果你没有争论?这根本不可能,因为程序名称是作为参数传递的。

参见:

int argc, char *argv[] 是什么意思?

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

© www.soinside.com 2019 - 2024. All rights reserved.