[Powered by Google Translate] [命令行参数] 克里斯托弗·巴塞洛缪 - 哈佛大学] [这是CS50 - CS50.TV] 一个程序一个有用的功能是接受用户的输入。 到目前为止,我们已经探讨了一些功能在CS50库 来接受用户输入,如“字符串,” 它提示用户,应用程序正在运行时,为一个字符串。 然而,在某些情况下,你要提供你的程序输入 它实际上是在运行。 通过这种方式,你不必问从用户的其他信息 在执行一个简单的任务。 举个例子,在UNIX的MV或移动命令。 该命令允许用户将一个文件从一个位置到另一个。 根据手册页,MV接受两个命令行参数: 正在被移动的文件和该文件的位置被移动到。 因此,这个例子中有一个命令有两个参数。 那么,我们如何告诉我们的C程序来使用这些命令行参数? 哦,原来是主要的,这是我们在所有的C程序中使用,有一个秘密。 主要有两个参数:argc和argv。 让我们对这些条款。 第一个参数是argc,它代表的参数计数, 有一个数据类型的整数。 argc参数包含参数的个数,包括命令。 在我们的移动命令,虽然我们只有两个参数显示, ARGC的值将是3。 第二个参数,argv的,它代表的参数向量, 是指向字符串的字符指针数组。 这意味着,每个元素在argv,从零开始, 包含的命令和参数。 例如,ARGV [0],我将把为ARGV零, 总是包含正在运行的命令 - 在这种情况下,毫伏。 ARGV [1]将包含第一个参数,file.txt的, 和argv [2]将包含第二个参数,〜/ CS50 /。 最后一个参数argv的永远是空的。 因此,让我们执行这些命令行参数。 在前面的练习中,我们把无效的,没什么意思,作为主要的参数。 然而,为了使用命令行参数, 我们需要删除无效和地点内的主要诠释argc,焦炭*的argv []。 现在,访问整个从argv元素,这是你的论点, 你可以简单地重复,循环,通过这样的数组。 ,里面的主的身体,我们要继续前进,然后键入一个for循环: (INT I = 0;我ARGC,我+ +)。 我们不需要一个大括号,在这里,因为我们只执行一行代码 身体内的这个循环。 我们将继续前进,一次打标签, 然后输入输出(ARGV [D],代表一个整数值, 是%s,对于字符串,然后换行字符。 然后,我们提供printf我为当前迭代循环 和argv [i]的当前命令行参数的字符串表示形式。 当我们运行它带有两个参数,我们可以看到在终端上显示的参数。 刚才我们说的argv举行的字符指针数组。 所以,如果是这样的话,怎么那么,我们访问每个参数的单个字符? 例如,如果我想寻找一个特定的字符中的第一个参数呢? 那么,答案是,我们需要申请一个嵌套循环 在参数字符串中的每一个元素,然后遍历。 这是你如何做到这一点。 首先,我们要去副本的example2.c的。 然后,在第一个for循环, 我们要添加一个额外的循环。 因此,对于(J = 0,N = strlen的(的argv []) 然后给了我们当前参数的长度, J 。 所以,让我们编译和运行,并为它提供的实际参数。 而且,我们可以看到,我们现在已经在参数的确切位置,每个单独的字符。 所以,就是这样。我是克里斯托弗·巴塞洛缪,这是CS50。 [CS50.TV]