C 使用argv访问参数

C 使用argv访问参数,c,argv,C,Argv,这是我一直在测试的东西,只是打印出一堆东西,但有一个案例我不太明白,因为某种原因 我需要将一个整数作为参数传递给一个函数,以便以后使用,但当我再次打印出来以确保正确存储它时,会得到一个随机数。这是守则的相关部分: int num_bytes = argv[1]; .... printf("Max number of bytes: %d", num_bytes); 我只向函数传递了一个参数,它是一个int。我还尝试将argv[1]转换为int,但这也不起作用。我不确定这是否是printf的问题

这是我一直在测试的东西,只是打印出一堆东西,但有一个案例我不太明白,因为某种原因

我需要将一个整数作为参数传递给一个函数,以便以后使用,但当我再次打印出来以确保正确存储它时,会得到一个随机数。这是守则的相关部分:

int num_bytes = argv[1]; 
....
printf("Max number of bytes: %d", num_bytes);

我只向函数传递了一个参数,它是一个int。我还尝试将argv[1]转换为int,但这也不起作用。我不确定这是否是printf的问题。如果只是那样,我不介意。我只需要知道我正确地将值存储为int。我知道argv是一个指向字符串的指针数组(我认为是C字符串),但我认为可以将字符转换为int。

char**argv
被认为是一个字符数组(或字符串)。首先需要将
argv
中的值转换为整数

您可以通过
atoi
执行此操作:

int num_bytes = atoi(argv[1]);

char**argv
被视为字符数组(或字符串)。首先需要将
argv
中的值转换为整数

您可以通过
atoi
执行此操作:

int num_bytes = atoi(argv[1]);

argv是指向字符串数组的指针。您需要调用atoi(argv[1])来获取传递的整数参数。

argv是指向字符串数组的指针。您需要调用atoi(argv[1])来获取您传递的整数参数。

atoi()不是标准函数,请参阅我的答案。@H2CO3:无论是哪种方法,都需要导入
atoi()
是一种更直接(也更容易观察)的方法。我想知道为什么你的答案会得到两张赞成票,而我的答案是零,我提供了多个解决方案和一个标准解决方案,我还解释了为什么它会产生这些特定结果的原因……标准:在任何一份官方C文件(ANSI C、C89、C99等)中都可以找到@H2CO3:
atoi()
是一个标准的c库函数,在c99标准的§7.22.1.2下定义。atoi()不是一个标准函数,请参见我的答案。@H2CO3:无论采用哪种方法,都需要导入
atoi()
是一种更直接(也更容易观察)的方法。我想知道为什么你的答案会得到两张赞成票,而我的答案是零,我提供了多个解决方案和一个标准解决方案,我还解释了为什么它会产生这些特定结果的原因……标准:在任何一份官方C文件(ANSI C、C89、C99等)中都可以找到@H2CO3:
atoi()
是一个标准的c库函数,定义见c99标准的§7.22.1.2。