将数组中的元素转换为 C 中的特定整数

turning an element in array to a specific integer in C

我想在 argv[] 中选择一个特定元素并将其分配给一个整数 'k.' 我试过了

int k = argv[1] 

但它显示出一些错误。

我知道 argv[1] 可以是整数以外的东西,例如 char。我认为这是一个问题,但不知道如何解决。

所有命令行参数都作为 strings 传递 - 每个 argv[i] 都是指向字符串第一个字符的 char *。如果您将程序命名为

./foo 100

然后 argv 包含:

argv[0] == address of the string "./foo"
argv[1] == address of the string "100"
argv[2] == NULL

要将 argv 的元素转换为整数,您需要使用 atoistrtol 等库函数。我更喜欢使用 strtol,因为它允许您捕获非数字字符并从错误输入中恢复:

#include <stdlib.h>
#include <ctype.h>
...
char *chk; // will point to the first character *not* converted by strtol

int tmp = (int) strtol( argv[1], &chk, 10 ); // assuming base-10 input
if ( !isspace( *chk ) && *chk != 0 )
{
  fprintf( stderr, "%s is not a valid integer, try again!\n", argv[1] );
  return EXIT_FAILURE;
}

int k = tmp; 
// proceed as before

虽然在这种情况下是多余的,但我建议将 strtol 和类似转换函数的结果分配给一个临时变量,然后在分配给预期目标之前确保一切都有效。