我知道这个问题很基本,我也是新手,所以请帮助我解决这个问题:
我有这段代码:
int wmain(int argc, wchar_t *argv[])
{
if (*argv[1] == L'-' && (!_wcsicmp(L"install", argv[1]+1)))
{
wprintf(L"You pressed: -install !");
}
else
{
wprintf(L"Unknown");
}
}
它工作正常,但如果我替换为:
int wmain(int argc, wchar_t *argv[])
{
if (*argv[1] == L'-' && (!_wcsicmp(L"install", argv[2])))
{
wprintf(L"You pressed: -install !");
}
else
{
wprintf(L"Unknown");
}
}
跑步时休息。
我不知道
任何人都为我解释,并给我关于wchar_t ???
的文件答案 0 :(得分:2)
argv [1] +1指向argv [1]字符串中的第二个字符,而argv [2]指向下一个字符串。
答案 1 :(得分:2)
<强>首先,强> 为什么要使用argv [1] +1: - &GT; _wcsicmp需要POINTER,所以你需要传递:argv [1] + 1或argv [2]
<强>其次,强> argv [1] +1和argv [2]之间有什么区别(我上面已经使用过)。 : - &GT; 你看到wmain的第二个参数:wchar_t * argv []? - 这是ARRAY的指示器(同样指向POINTER)。
每个参数用空格分隔。 因此,argv [1]指针指向第二个参数,argv [2]指针指向第三个参数。 并且,argv [1] +1将指针中的地址增加1(意思是,该指针将指向第二个参数字符串中的第二个字符)
答案 2 :(得分:1)
argv[1] + 1
是指向argv[1]
中第二个字符的指针,而argv[2]
是argv
中第三个元素(指向字符的指针)。
argv[1] == *(argv + 1)
argv[2] == *(argv + 2)
argv[1] + 1 == *(argv + 1) + 1 != argv[2]