c - C程序中的参数类型区分

标签 c command-line-arguments argv argc

我有一个主要功能,

int main (int argc, char **argv)
{}

我应该传递两个不同的命令行参数:

argv[1]=IP ADDRESS type
argv[2]=INTEGER type

例如,./a.out IP-ADDRESS INTEGER。我用其他一些脚本调用这个二进制文件。

问题是当 argv[1] 不可用时,它的行为类似于 INTEGER 值作为 argv[1]

如果 argvINT 类型,我如何检查是否不进入 argv[1] 或仅IP-ADDRESS 类型是否允许在 argv[1] 中?

最佳答案

传递给 main 函数的 char **argv 变量不仅仅是一个“arguments”数组,它是一个 char* 数组,只包含您在外壳。

例如,使用 ./a.out 127.0.0.1 12 调用您的程序将使 argv 如下所示:

argv[0] = "./a.out\0"

argv[1] = "127.0.0.1\0"

argv[2] = "12\0"

argv[3] = NULL

您需要编写一些代码来转换和存储 argv 中的字符串,以便按照您想要的方式处理它们。

关于c - C程序中的参数类型区分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14215911/

相关文章:

c++ - Visual Studio 2015 中的命令参数字段

python - 使用 *list 传递参数不适用于 execl

c - 将 argv[0] 设置为比当前分配的值更长的值

java - 传递参数使指针来自整数,而不需要从 printf 进行强制转换调用

c - 无法在 system() 中输入字符串 "echo "$(cat test.txt )""

c++ - char argv[][7] 和 char *argv[] 的区别

c# - 如何创建也可以在命令提示符下运行的 Windows 窗体程序

python - 在 Python 中,当每个选项可以有多个参数时,是否有更好的方法来处理命令行选项

c - ARGV中的 vector 是指一维数组吗?

c - 是否可以通过按键随时退出没有线程的 C 控制台应用程序?