首页 文章

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

提问于
浏览
0

在我的程序中,我使用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

    更改:

    main(int argc, int **argv){
    

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

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

  • 3

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

    另外,是什么:

    if(argc == 0)
    

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

    看到:

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

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

相关问题