我正在努力做到这一点,以便您可以调用具有要执行的函数的方法,例如 -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;
}
最佳答案
这就是 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
数组。
关于c - 您如何使输入接受 3 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245913/