简单:从终端(Mac)将数据传递到c程序

时间:2011-11-09 06:04:55

标签: c macos parameters terminal

所以,这是一个非常基本的问题。对于作业,我们必须编写一个c程序来计算虚拟地址的页面和偏移号。当我创建一个我们应该进行计算的虚拟地址的声音变量时,我的程序似乎工作正常,但我无法弄清楚如何传递它。

作业说我们应该像这样运行我们的程序

./program_name 19982

我无法弄清楚如何在我的mac终端上传递19982。任何帮助表示赞赏。 (并且在某人开玩笑之前。)

4 个答案:

答案 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)

您可以使用argcargv来访问程序的参数。 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]);
}