gpt4 book ai didi

c - 如何让命令行读取C中的文件路径和变量

转载 作者:行者123 更新时间:2023-11-30 15:47:14 25 4
gpt4 key购买 nike

我试图让一个程序从 C 语言的命令行运行,它需要输入文件目录并输入变量。我正在尝试使用 stricmp 函数来读取在命令行中输入的代码,但我不确定如何让它读取文件(我读到了您应该输入“r”的文件路径)并进行计算。我在想可能是 scanf 并且我需要能够输入变量。如果有人可以查看我的代码并给我一些指示,我将非常感激。谢谢!

int main(int argc, char *argv[])
{
int i = 0;

for(i < argc; i++;)

{

if(0 == stricmp("Interrogator MLV_PLV_179 r %s %s", argv[i]))
{
InterrogatorProtocol1553Flag = TRUE;
// Set DMV-179
Interrogator_OFP_Select = INT_OFP_DMV_179;
// Set MLV/PLV (Dim S-Record File)
DirectFlashProgFlag = FALSE;
// Set Fill Type to 1
Interrogator_PIR_OFP_FOP = 3;
Interrogator_PIR_ProgramID = (Interrogator_PIR_T_I << 11) |
(Interrogator_PIR_OFP_FOP << 5) |
Interrogator_PIR_RT_Address;
}

else if(0 == stricmp("Interrogator DirectFlash r r %s %s", argv[i]))
{
InterrogatorProtocol1553Flag = TRUE;
Interrogator_OFP_Select = INT_OFP_DMV_179;
DirectFlashProgFlag = TRUE;
CreateInterrogatorFlashImage;
}

else if(0 == stricmp("Interrogator MLV_PLV_183 r %s %s", argv[i]))
{
InterrogatorProtocol1553Flag = TRUE;
// Set DMV-183
Interrogator_OFP_Select = INT_OFP_DMV_183;
// Set MLV/PLV (Dim S-Record File)
DirectFlashProgFlag = FALSE;
// Set Fill Type to 6
Interrogator_PIR_OFP_FOP = 6;
Interrogator_PIR_ProgramID = (Interrogator_PIR_T_I << 11) |
(Interrogator_PIR_OFP_FOP << 5) |
Interrogator_PIR_RT_Address;
}

else if(0 == stricmp("Interrogator SRecord r r %s %s", argv[i]))
{
InterrogatorProtocol1553Flag = TRUE;
Interrogator_OFP_Select = INT_OFP_DMV_183;
DirectFlashProgFlag = TRUE;
CreateIntermediateSRecordFile;
}

else
{
fprintf(stderr, "Unknown parameter: %s", argv[i]);
}

}

return 0;
}

最佳答案

命令行上的每个参数都作为单独的 argv 条目传入。假设我已经理解您的参数的含义,我希望您的代码看起来更像这样:

if(0 == stricmp("Interrogator", argv[i]))
InterrogatorProtocol1553Flag = TRUE;
else if(0 == stricmp("MLV_PLV_179", argv[i]))
Interrogator_OFP_Select = INT_OFP_DMV_179;
else if(0 == stricmp("MLV_PLV_183", argv[i]))
Interrogator_OFP_Select = INT_OFP_DMV_183;
else if(0 == stricmp("DirectFlash", argv[i]))
DirectFlashProgFlag = TRUE;
...

在开始循环之前,您将使用您希望在尚未设置各种参数时使用的默认值来初始化这些变量。

如果您的参数之一是文件名,那么您需要某种方法来指示它是哪一个。一个简单的选择是将其设为命令行上的最后一个值。所以你会得到这样的文件名:

filename = argv[argc-1];

在这种情况下,读取所有其他参数的循环应该只到达 argc-1,否则文件名将被解释为无法识别的参数,并且您会收到错误。

关于c - 如何让命令行读取C中的文件路径和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17570790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com