我正在寻找一个简单应用程序的示例,该应用程序将使用 printf
根据位置参数表达两个不同的字符串。
在 bash
中我会使用:
case $1 in
-h | --help ) showHelp
exit
;;
* ) manPipe
exit 1
esac
在此之前,我会列出如果运算符(operator)键入 $ foo -h
或 $ foo -help< 将调用名为
进入终端。 showHelp
的函数$ foo -bar
之类的任何其他内容都会请求调用函数 manPipe
。
到目前为止我有这段代码:
#include <stdio.h>
#include <cstring>
int secretFunction() {
printf("Success! You found the secret message!");
}
int main() {
str posParam;
posParam = X;
printf("Enter a number:");
scanf("%s",&posParam);
if ( posParam == "X" ){
printf("Welcome to app!\nType: " + $0 + " t\nto show a message");
}else{
if (posParam == "t" ){
secretFunction();
}
return 0;
}
return 0;
我知道这段代码真的很糟糕,我试图在 bash 中制作上述代码的示例。我不是要将 bash 脚本
转换为 C 应用程序
,而是尝试使用它。我从关于 MD5 checksum 的维基百科文章中得出了我想做的事情的想法。 C 应用程序
,它接受一个字符串并为其计算 MD5 校验和。我似乎无法弄清楚他们将位置参数的哪一部分传递给应用程序。
这有点不同,我理解,因为它提示用户提供答案,然后将其赋值。我宁愿在第一个实例中将它用作位置参数。
最佳答案
Bash(等)中的 $1
是 C 程序中的 argv[1]
:
#include <stdio.h>
int main(int argc, char *argv[])
{
if (argc > 1)
{
printf("You provided at least one argument (or parameter)\n");
printf("The first argument is \"%s\"\n", argv[1]);
}
return 0;
}
参数 argc
是 argv
数组中有效条目的数量。 argv[0]
是可执行文件名,最多可以访问argv[argc - 1]
。 (实际上您也可以访问 argv[argv]
,它始终是一个 NULL
指针)。
关于c - 采用 2 个位置参数的 C 语言示例应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376325/