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