所以,这是一个非常基本的问题。对于作业,我们必须编写一个c程序来计算虚拟地址的页面和偏移号。当我创建一个我们应该进行计算的虚拟地址的声音变量时,我的程序似乎工作正常,但我无法弄清楚如何传递它。
作业说我们应该像这样运行我们的程序
./program_name 19982
我无法弄清楚如何在我的mac终端上传递19982。任何帮助表示赞赏。 (并且在某人开玩笑之前。)
答案 0 :(得分:6)
听起来你正在寻找argv
,如果你不知道它叫什么,我想这很难找到!这不是特定于Mac OS X的终端。
argv
函数的main()
参数是一个字符串数组;它的元素是各个命令行参数字符串。
正在运行的程序的路径是argv
的第一个元素,即argv[0]
。
argv
中的元素数量存储在argc
:
#include <stdio.h>
int main(int argc, char* argv[])
{
int arg;
for (arg = 0; arg < argc; ++arg)
{
printf("Arg %d is %s\n", arg, argv[arg]);
}
return 0;
}
编译:
% gcc program_name.c -o program_name
Run:
% ./program_name 19982
Arg 0 is ./program_name
Arg 1 is 19982
将argv[1]
转换为int
作为练习。
答案 1 :(得分:4)
您可以使用argc
和argv
来访问程序的参数。 argc
是“参数计数” - 传递的参数数量。 argv
是“参数向量”,其中第一个成员是程序的名称。
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char* argv[] )
{
int Address;
if (argc > 1)
{
Address = atoi(argv[1]);
}
else
{
printf("No arguments passed\n");
return 1;
}
return 0;
}
答案 2 :(得分:1)
通常,您使用&#34; argv / argc&#34;在主要。例如:
#include<stdio.h>
int
main (int argc, char *argv[])
{
if (argc < 2)
printf ("You didn't enter any arguments\n");
else
printf ("Your first argument is %s\n", argv[1]);
return 0;
}
在Linux下,您可以像这样编译和运行:
gcc -o hello hello.c
./hello howdy!
再次在Linux下,它会输出如下内容:
Your first argument is howdy!
答案 3 :(得分:1)
所有C(和C ++,不了解objective-c)程序都在函数main
中开始执行。该函数有两个参数:一个整数,通常名为argc
,它是给予程序的参数数量的计数器;第二个函数参数是char
指针数组,通常称为argv
,是实际的命令行参数。
argv
中的第一个条目始终是命令本身的名称,这意味着argc
始终至少为1。
以下程序打印命令行中给出的所有参数:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Total number of values in argv: %d\n", argc);
for (int a = 0; a < argc; a++)
printf("argv[%02d]: %s\n", a, argv[a]);
}