Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么CommandLineToArgvW对其第一个参数的处理方式不同?_C_Windows_Winapi_Command Line - Fatal编程技术网

为什么CommandLineToArgvW对其第一个参数的处理方式不同?

为什么CommandLineToArgvW对其第一个参数的处理方式不同?,c,windows,winapi,command-line,C,Windows,Winapi,Command Line,为什么以下几行不打印相同的内容 #include <stdio.h> #include <shellapi.h> int main() { int n; fwprintf(stderr, L"%s\n", CommandLineToArgvW( L"\"C:\\\\\" b", &n)[0]); fwprintf(stderr, L"%s\n", CommandLineToArgvW(L"a \"C:\\\\\" b", &n)

为什么以下几行不打印相同的内容

#include <stdio.h>
#include <shellapi.h>

int main() {
    int n;
    fwprintf(stderr, L"%s\n", CommandLineToArgvW(  L"\"C:\\\\\" b", &n)[0]);
    fwprintf(stderr, L"%s\n", CommandLineToArgvW(L"a \"C:\\\\\" b", &n)[1]);
}

但是我认为它们应该打印相同数量的反斜杠。

来自Microsoft参考:“
命令行到argvw
对反斜杠字符有一种特殊的解释,当它们后跟引号字符(“)。此解释假设前面的任何参数都是有效的文件系统路径,否则它的行为可能不可预测”(我的重点)。由于斜杠不是有效的文件系统路径,因此您可以从函数中预期不可预测的行为。将更具启示性,例如使用“\”(输出)因此,0(第一个)的命令行为argvwtoken使用另一个解析规则命令行的第一个字是程序名,程序名中的反斜杠是文字,而不是双倍的。@RaymondChen:谢谢!这是记录在某个地方还是我应该知道的东西?还有其他类似的怪癖吗?@Someprogrammerdude:我本来可以把它作为一个有效的路径,问题会解决的“我还在那儿。
C:\\
C:\