你怎么能做一个输入需要3个参数

时间:2015-01-30 22:48:16

标签: c

我正在努力使它能够调用方法,使用函数来执行例如-r,-u,-l,然后使用文件名或使用标准输入,我将如何制作它以便它可以接受3个输入我已尝试了几件事但我刚开始使用c并且几乎不知道我在做什么。我能弄清楚的是如何输入三个然后能够比较用于选择要执行的操作的字符串。

#include <stdlib.h>

void upper(FILE *src, FILE *dest)
{
    int c;
    {
        fprintf(dest, "%c", toupper(c));
    }
}

void lower(FILE *src, FILE *dest)
{
    int c;
    while ((c = fgetc(src)) != EOF)
    {
        fprintf(dest, "%c", tolower(c));
    }
}

void rot13(FILE *src, FILE *dest)
{
    int c;
    while ((c = fgetc(src)) != EOF)
    {
        fprintf(dest, "%c", c+13);
    }
}

FILE * input_from_args(int argc,char choice, const char *argv[])
{
    if (argc == 1)
    {
        return stdin;
    } else
    {
        return fopen(argv[1], "r");
    }
}

FILE * input_from_args(int argc, const char *argv[])
{
    if (argc == 1)
    {
        return stdin;
    } else
    {
        return fopen(argv[1], "r");
    }
}

int main(int argc,char** choice,const char *argv[])
{
  FILE *src = input_from_args(argc, argv);
  FILE *dest = stdout;

    if (src == NULL)
    {
        fprintf(stderr, "%s: unable to open %s\n", argv[0], argv[1]);
        exit(EXIT_FAILURE);
    }
    else if(*choice == '-r')
    }
      rot13(src,dest)
    }
    else if(*choice == '-u')
    {
      upper(src,dest)
    }
    else if(*choice == '-l')
    {
      lower(src,dest)
    }

    fclose(src);

    return EXIT_SUCCESS;
}

1 个答案:

答案 0 :(得分:3)

这就是argv数组的用途。它将包含传递给程序的所有参数。

例如,采用这个简单的测试程序:

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("argc = %d\n", argc);

    for (int a = 0; a < argc; ++a)
    {
        printf("argv[%d] = \"%s\"\n", a, argv[a]);
    }
}

如果您构建该源,并执行

等程序
$ ./a.out argument1 argument2 argument3

将输出

argc = 4
argv[0] = "./a.out"
argv[1] = "argument1"
argv[2] = "argument2"
argv[3] = "argument3"

换句话说,传递给程序的参数与源代码中的参数不匹配,而是转换为argv数组。