将 argv[1] 存储到 C 中的 char 或 int

storing argv[1] to a char or int in C

因此,我不确定是否应该尝试将 argv[1] 转换为 int,或者是否可以将其保留为 char。但是我很难让 argv 以我想要的方式运行。

我的终端输入将如下所示:

./a.out a

其中 argv[1] 可以是 'a' 或 'd'。

问题:当试图通过 if 语句传递它时,例如:

int main(int argc, char *argv[])
{
  char *letter;
  letter=argv[1];

  printf(" %s  %s ", argv[1], letter); //THIS prints correctly

//However, even when the input IS 'a', it will still print this:

  if(letter != "a" || letter != "d") 
      printf("Input letter not 'a' or 'd'\n");
  else{//More stuff//}    
}

当我尝试自己修复它时遇到各种错误。我看到一些解释 argv[1][0] 和使用 atoi 的线程,但是在玩弄之后,我无法打印出来。

将指针 argv[1] 的值与字符串文字 "a""d".

的第一个字符的地址进行比较是没有意义的

随便写

#include <string.h>

//...

if( letter == NULL || ( strcmp( letter, "a" ) != 0  && strcmp( letter, "d" ) != 0 ) ) 
      printf("Input letter not 'a' or 'd'\n");