将 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");
因此,我不确定是否应该尝试将 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");