将 argv 传递给函数以填充全局变量

Pass argv to function to populate global variable

我正在尝试通过将命令行参数传递给函数来填充全局 int 变量。当我这样做时,我会收到警告(见下文)以及一个奇怪的 return 数字(例如 52 而不是预期的 49)。

如有任何提示,我们将不胜感激。这是 HW - 但只是整个作业的一小部分。

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


int             numJoeys                = MIN_NUM_LEGAL_JOEYS - 1;

int main (int argc, char* argv[])
{
        initializeNumJoeys(argc,argv);
        printf("%d", numJoeys);
}

void initializeNumJoeys(void argc, void *argv[])
{
        char line[LINE_LEN];
        if (argc > MAMAS_NUM_JOEYS_CMD_LINE_INDEX)
                numJoeys = *argv[1];
}

argv_test.c:13: warning: conflicting types for ‘initializeNumJoeys’
argv_test.c:9: warning: previous implicit declaration of ‘initializeNumJoeys’ was here

把这个放在 main() 函数上面

void initializeNumJoeys(int argc, char *argv[]);

原因是隐式函数声明,编译器找不到 initializeNumJoeys() 的原型并将其隐式声明为

int initializeNumJoeys();

所以当它找到定义时,就会与之前的声明冲突。

另外,改变这个

numJoeys = *argv[1];

numJoeys = strtol(argv[1], NULL, 10);

还有,函数签名错误

void initializeNumJoeys(void argc, void *argv[])
             /*           ^ should be int */

所以改成

void initializeNumJoeys(int argc, void *argv[])

别忘了修复原型。