我究竟需要做什么才能将argv [1]的内容转换为不使用参数的函数?
这是如何运作的?
const char *cPtr = argv[1];
Run Code Online (Sandbox Code Playgroud)
并将其传递给带有0个参数的someFunction()!
从我正在编写的程序中解析参数时遇到问题,代码如下:
void parse_args(int argc, char** argv)
{
char ch;
int index = 0;
struct option options[] = {
{ "help", no_argument, NULL, 'h' },
{ "port", required_argument, NULL, 'p' },
{ "stop", no_argument, NULL, 's' },
{ 0, 0, 0, 0 }
};
while ((ch = getopt_long(argc, argv, "hp:s", options, &index)) != -1) {
switch (ch) {
case 'h':
printf("Option h, or --help.\n");
break;
case 's':
printf("Option s, or --stop.\n");
break;
case 'p':
printf("Option p, or --port.\n");
if (optarg != …Run Code Online (Sandbox Code Playgroud) 我对Java很新.目前尝试将args []中给出的文件名传递给此FileReader,但是当我编译它时,它说找不到指定的文件.如果我硬编码文件名,它工作正常.这应该是怎么回事?
public class StringSplit
{
public void parseCommands
{
try
{
//not working, why? It works if I do FileReader fr= new FileReader("hi.tpl").
FileReader fr= new FileReader(args);
}
public static void main (String[] args)// args holds the filename to be given to FileReader
{
if (args.length==0)
{
System.out.println("Error: Bad command or filename. Syntax: java [filename.tpl]);
System.exit(0)
}
StringSplit ss= new StringSplit();
ss.parseCommands();
}
}
Run Code Online (Sandbox Code Playgroud) int main(int argc, char *argv[])
{
cout << strcmp(argv[1], "id");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它返回false.我错过了什么?
谢谢我让它工作,将在4分钟内接受答复.
我有一个主要功能,
int main (int argc, char **argv)
{}
Run Code Online (Sandbox Code Playgroud)
我应该传递两个不同的命令行参数:
argv[1]=IP ADDRESS type
argv[2]=INTEGER type
Run Code Online (Sandbox Code Playgroud)
例如,./a.out IP-ADDRESS INTEGER.我用其他一些脚本调用这个二进制文件.
问题是虽然argv[1]不可用,但它的行为与INTEGER价值一样argv[1].
我怎样才能检查一下,如果argv是类型INT不进入argv[1]或只IP-ADDRESS允许类型argv[1]?
我写了(从谷歌复制并粘贴并简化)一个C程序,使用getopt打印出从Unix命令行传入的参数值.
从Unix命令行:
./myprog -a 0 -b 1 -c 2
Run Code Online (Sandbox Code Playgroud)
我的C代码是:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int i;
while ((i = getopt(argc, argv, "abc")) != -1) {
switch (i) {
case 'a':
printf("A = %s\n", optarg);
break;
case 'b':
printf("B = %s\n", optarg);
break;
case 'c':
printf("C = %s\n", optarg);
break;
default:
break;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想编程打印出传递的每个值,例如
A = 0
B = 1
C = 2
Run Code Online (Sandbox Code Playgroud)
但它根本不打印任何东西.
当我运行下面的代码时,我收到以下错误:eval()arg 1必须是字符串或代码对象
谁知道为什么?这是我从一本书中学习的代码,所以我认为它是正确的.
# Prompt the user to enter three numbers
number1 = eval(input("Enter the first number: "))
number2 = eval(input("Enter the second number: "))
number3 = eval(input("Enter the third number: "))
# Compute average
average = (number1 + number2 + number3) / 3
print("The average of", number1, number2, number3, "is", average)
Run Code Online (Sandbox Code Playgroud) 我在练习时遇到问题,无法理解错误.它应该是一个简单的args练习:
import System.IO
import System.Environment
main= do
args < - getArgs
nomeficheiro <- return( args !! 0)
putStrnLn ( "Name is" ++ nomeficheiro)
Run Code Online (Sandbox Code Playgroud)
然后我应该运行它:$ ./comando James
错误:
<interactive>:51:1:
parse error on input ‘$’
Perhaps you intended to use TemplateHaskell
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于args的其他疑问,我没有找到任何可以帮助我的答案
在Java中,命令行参数作为String数组传递给我的程序,如下所示:
public static void main(String[] args ) { }
Run Code Online (Sandbox Code Playgroud)
为什么这会使用数组,而不是单个字符串?
我认为如果命令行参数作为单个String传入,它会更灵活/适应性,让我的程序用它做我想要的.使用String数组而不是单个String是否有任何设计优势?
假设我要输入2个命令行参数 - 源和目标.GetOptions通过仅检查参数名称的第一个字符而不是完整字符串来允许命令行.如何验证完整的参数字符串而不是仅允许其子字符串传递?
这是一个示例程序:
my ($source,$dest);
GetOptions(
'from=s' => \$source,
'to=s' => \$dest
) or die "Incorrect arguments\n";
Run Code Online (Sandbox Code Playgroud)
它接受以下任何一项:
-from-fro-fr-f
-to
-t但是,我希望它只接受
-from-to如果除了那些完整的词之外的任何东西都通过了
我如何禁止缩写选项?