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

时间:2017-04-19 22:19:47

标签: c string argv atoi

所以,我不确定是否应该尝试将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,但在玩完它后,我无法打印出来。

1 个答案:

答案 0 :(得分:0)

将指针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");