问我的问题是,即使我们在命令提示符下提供了整数/浮点型参数,它们仍然被视为字符串或不以C语言处理。我不确定这可以帮助一点点。这是真的还是不是用C语言,为什么?其他人喜欢Java还是Python呢?C中命令行的参数处理
回答
基本上,这是在操作系统和程序之间创建接口的问题。 任何程序。请记住,程序并不总是用C语言编写的,而且您甚至不知道语言中是否有诸如float
或int
之类的内容。
您希望能够传递多个参数(使用自然分隔符),这些参数可以轻松编码任意信息。在C中,字符串的长度可以是任意的,对它们唯一的约束是它们中的零字节表示字符串的结尾。这是将任意信息传递给程序的高度灵活和自然的方式。
所以你不能直接向程序提供任意的整数/浮点型参数;操作系统(Unix/Linux/Windows /等)不会让你。您没有任何工具可以为您提供该界面,与您无法将鼠标单击作为参数的方式相同。你所提供的是一系列字符。由于Unix和C一起设计,它也是C编程语言的一部分,从那里开始它向C++,Java,Python和大多数其他现代编程语言工作,并以相同的方式进入Linux,Windows和大多数其他操作系统。
与语言无关,Unix上程序的命令行参数是字符串。如果程序选择将它们解释为数字,那很好,但这是因为程序(或程序员)选择了这样做。同样,对语言的运行时支持可能会将o/s传递的参数改变为整数或浮点类型,但o/s会将字符串传递给该运行时(我知道没有这样做的语言,但我没有声明了解所有语言)。
要看到这一点,请注意执行程序的方法是exec*()
系列函数,每个函数都需要一个字符串,它是要执行的程序的名称,以及一个字符串数组被传递给程序。 system()
和popen()
等功能都建立在exec*()
系列功能之上 - 当然,它们也使用fork()
。即使是posix_spawn()
函数也会获取指向该生成程序参数的字符串指针数组。
这不像邮寄一封没有信封的信。我们都同意使用被称为信封的通用外壳。操作系统使用称为字符串的通用项目将参数传递给程序。了解程序想要处理的参数超出了操作系统的范围。
有一些例外,想到的是将参数传递给Linux内核模块。这些可以作为字符串以外的项目传递。
- 1. 处理C命令行参数
- 2. 处理命令行参数
- 3. 处理特定的命令行参数
- 4. 处理C中参数前后的命令行选项
- 5. 处理在Python命令行参数
- 6. 批处理命令行参数匹配
- 7. C++ POCO命令行处理
- 8. 在处理命令行参数时清理控制流[C#]
- 9. 如何处理命令行参数缺少的命令行参数/选项?
- 10. C++的命令行参数?
- 11. 最佳实践来处理命令行参数在C#
- 12. C - main()命令行参数
- 13. 命令行参数在C#
- 14. c命令行参数
- 15. C命令行参数
- 16. c#命令行参数
- 17. 给命令行参数(C++)
- 18. 命令行参数c
- 19. C++命令行参数
- 20. 命令行参数C++
- 21. 解析C中的命令行参数
- 22. C中的命令行参数
- 23. 如何处理&符号作为Python中的命令行参数
- 24. 如何使用PowerShell中的参数运行批处理命令
- 25. 如何处理命令行参数中的Java
- 26. 批处理:检查批处理文件中的命令行参数
- 27. 通过WPF处理命令参数MVVM
- 28. 如何管理docker run命令中的命令行参数?
- 29. 从参数的C#运行命令行?
- 30. 批处理文件 - 命令行参数的数量
是的,你可以使用atoi转换为int,等等 – aah134
所以如果你的程序使用下面的参数'float,int,string,float'你会如何将它们传递给你的程序跨所有编程语言的标准和通用方式?你可以让它们变成结构,但最终会出现比它值得的更多的问题。以字符串形式传递它们是最普通和不引人注目的方式。 – nonsensickle