我有一个perl脚本接受一个很长的选项--pager='less -R',我只想将它缩短为-p.这是一个快速入侵,我不知道perl,我假设最直接的方法是在-pager ='less -R'之前搜索和替换ARGV数组中的-p(或perl中调用的任何东西)它开始处理命令行参数.
我了解 argv 和 argc 的作用以及它们的使用方式,但我需要重新创建它们。在 C 语言中,你将如何编写一个函数来模仿它们。
我正在尝试使用 fscanf 来读取和打印屏幕上的每个字符,但是在运行程序时出现分段错误(核心转储)。这是我的代码:
#include <stdio.h>
main(int argc, char * argv[]) {
int *a ;
FILE *input;
if (argc>=2) {
input= fopen(argv[1],"r");
if (input!=NULL) {
while (feof(input)==0) {
fscanf(input,"%d\n",a);
printf("%d\n",*a);
}
fclose(input);
} else {
printf("Error!\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我提供文件作为参数,如下所示:
./myprog input.txt
Run Code Online (Sandbox Code Playgroud)
该文件input.txt包含以下内容:
23
47
55
70
Run Code Online (Sandbox Code Playgroud) 我有一个函数,它接收并读取一个csv文件,以便我可以输入
python myscript.py filename.csv运行我的脚本.以下是我的功能:
def read(sys.argv[1]):
...
...
Run Code Online (Sandbox Code Playgroud)
但是我得到这个错误:
File "myscript.py", line 6
def read(sys.argv[1]):
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我怎么能写我的脚本才能做到这一点?
谢谢,
我尝试了几件事,每次重启Apache2都没有成功.
在phpinfo(),register_argc_argv保持"关闭".
我使用Ubuntu 14.04.3 64位,Apache 2.4.7和PHP 5.5.9.
我试过那些:
register_argc_argv = On
register_argc_argv = True
register_argc_argv: On
register_argc_argv: True
Run Code Online (Sandbox Code Playgroud)
在/etc/php5/apache2/php.ini中.
如果我想使用这样的命令使用一个exe文件:
1.exe < input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
要将文件名输入到用于修改输入文件和输出文件的C程序中,它会起作用吗?
我试过1.exe input.txt output.txt它有效.
但是,当我将其更改为时1.exe < input.txt > output.txt,它无法打开该文件.
甚至,我增加了指针,argv[1]以argv[2]及argv[2]对argv[4].
那么,我应该怎么做1.exe < input.txt > output.txt命令?
我正在尝试编写一个程序,其中我必须通过系统调用exec()执行2个程序。
这两个程序名由argv输入提供,如下所示:./ forkexec程序名parameterlist;程序名参数列表因此,我必须在冒号处将其分开,以阐明我的意思,我将举一个例子。
./forkexex ls -l -a / tmp \; ls -l -a / bin
所以我想我需要2个数组对吗?而且我可以通过使用strtok来做到这一点吗?
import sys
a =int( sys.argv[1])
print "\nArguments -->",a , sys.argv[2]
print "\nNo of Argu ", len(sys.argv), "\n"
print str(sys.argv)
Run Code Online (Sandbox Code Playgroud)
命令窗口输出我给出的是:
python testfunction.py a sf df sf
Run Code Online (Sandbox Code Playgroud)
Whenevr第一个参数被视为'a',它显示错误 - >
invalid literal for int() with base 10: 'a'
Run Code Online (Sandbox Code Playgroud)
新手到python.如果没有尝试,PLease提供了如何处理它的解决方案
也
当我不给蚂蚁论证时,我也应该处理
命令窗口outout我给:
python testfunction.py
错误:IndexError:列表索引超出范围
是否可以编写一个功能不同的C程序argv[0]?
实际上,我正在从C教科书中进行练习。练习是编写一个程序,该程序根据调用它的名称将大写转换为小写,或将小写转换为大写,如中所述argv[0]。
仅供参考,练习来自K&R的教科书
我写了这个简单的代码来了解参数系统是如何工作的。我将文本文件拖到.exe文件,并得到2作为输出,而不是我期望的1。为什么是2?Arg 1是.exe本身吗?如何找到参数的文件名?
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i = 0;
const int max = 100000;
if (argc > 0)
{
cout<< argc <<endl;
}
cin.get(); cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
还有一个问题。我在哪里可以告知如何访问每个参数并使用这些信息。我的目标是打开所有作为参数传递给.exe的文件。
这不是一个重复的问题,我问为什么当您传递1个参数时返回2。链接中的问题是另一个...
为了解决我的问题在这里,我想知道是否/如何我可以比在格式定义的命令行参数的第二个变量其他char** argv或char* argv[]。原因是 pybind11 不允许函数输入中的任何一个。以下是我尝试过的方法:
#include <stdio.h>
int main(int argc, int* argv_){
for (int i = 0; i < argc; ++i){
printf("%s\n", (char *)(argv_[i]));
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法背后的基本原理是指针本质上是一个整数,通过将地址转换为char指针,人们应该能够获得字符串。提前感谢您的支持。
#include <stdio.h>
#include <string>
int main(int argc, std::string* argv_){
for (int i = 0; i < argc; ++i){
printf("%s\n", argv_[i].c_str());
}
}
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
#include <string>
#include <vector>
int main(int argc, std::vector<std::string> argv_){
for (int i = 0; i < …Run Code Online (Sandbox Code Playgroud)