我在C中编写一个带有两个参数的小应用程序.一个是文件名,另一个是数字,它们可以按随机顺序指定.
./main filename 12345
和
./main 12345文件名
应该都有效.
当我知道文件名以字符开头时,我怎样才能轻松确定哪个是哪个?
我使用的很多命令行.exe应用程序允许你标记可选输入,例如program.exe -o outputfile.txt -f F其中"-o"表示与默认值不同的可选输出文件名,其中"-F"表示关于脚本的另一个选项.
到目前为止,我一直在使用sys.arg []变量来输入文件名等我的python脚本,但是必须按照设置顺序才能将标记输入转换为python脚本?
[这一切都是因为我不小心把输入名称和输出名称按错误的顺序排列并覆盖了我的输入文件]
我们的任务是拥有服务器 - 客户端模型....
我们应该检查命令行arg,如果没有(argc = 1),我们设置为服务器.否则我们使用argv [1]来设置客户端套接字......
如果我只是为参数使用随机性似乎运行正常,但是当我尝试将地址放入1.2.3.4时,它不会给出任何输出,只是启动程序而什么都不做.
我想我的问题是以IP地址的形式处理命令行参数的最佳方法.
这是我的主要功能.
int main( int argc, char *argv[] )
{
printf("%i",argc);
if(argc==1)
{
printf("Welcome to the ZOG Virtual Probe Game! You have choosen to take the role of a server.");
printf("\nPlease wait for an opponent to connect.");
runServer();
}else if(argc==2)
{
printf("Welcome to the ZOG Virtual Probe Game! You are now connecting to specified IP.");
runClient(argv[1]);
}else
{
printf("You used an invalid command line argument. You can input an IP address or …Run Code Online (Sandbox Code Playgroud) 有人可以告诉我为什么这段代码不起作用?它确实编译.当我在命令行中输入decrypt作为argv [1]参数时,它仍然给我else输出.即argv [1]即使它应该是不满意的.这是一项正在进行的工作,因此请忽略其他代码
if ((argv[1] == "decrypt"))
{
printf("Decrypting...\n");
c = getc(fp1);
if (c != EOF)
{
fread(inputbuffer, sizeof(char), 50 , fp1);
printf("%s", inputbuffer);
/*while(inputbuffer[i]!=EOF)
{
fputc((inputbuffer[i] / 2) - 5, fp2);
}*/
}
}
else {printf("argv not working");}
Run Code Online (Sandbox Code Playgroud) 我想打印从argv收到的字符串中所有字符的ascii值,只使用一个printf调用.
这样的东西,但只打印有效的字符(!= 0):
printf (" string is %s , in ascii = 0x%X %X %X %X", argv[1],
argv[1][0], argv[1][1], argv[1][2], argv[1][3]);
Run Code Online (Sandbox Code Playgroud)
我不想使用for循环,从0到strlen(argv [1]).我只需要使用一次打印电话.
如果argv [1] ="a",那么我只想打印:string是a,ascii = 0x61
如果argv [1] ="ab",那么我只想打印:string是ab,ascii = 0x61 62
问题是我不想打印垃圾数据
我有一个主要功能,
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或C++,但我即将完成编译一个用opencv检测面部的文件,这是一个已经为windows做的c ++文件的副本,用于在社交网络中进行标记,错误我编译时获取代码是下一个
In function 'main':
warning: assignment from incompatible pointer type
Run Code Online (Sandbox Code Playgroud)
int main( int argc, char** argv[])
{
char* dea;
int i=0;
while(i<argc)
{
if(i==1){
dea=argv[i];
}
i++;
}
char image[400],temp_image[400];
IplImage *img,*temp_img;
int key;
storage = cvCreateMemStorage( 0 );
cascade = ( CvHaarClassifierCascade* )cvLoad( face_cascade, 0, 0, 0 );
if( !(cascade) )
{
fprintf( stderr, "ERROR: Could not load classifier cascade\n" );
return -1;
}
sprintf(image,"dimage%d.jpg");
img=cvLoadImage(dea,0);
temp_img=cvLoadImage(dea,0);
if(!img)
{
printf("Could not load image file and trying once again: …Run Code Online (Sandbox Code Playgroud) 我有以下代码从命令行读取文件名并打开此文件:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
FILE *datei;
char filename[255];
//filename = argv[1];
//datei=fopen(filename, "r");
datei=fopen(argv[1], "r");
if(datei != NULL)
printf("File opened");
else{
printf("Fehler beim öffnen von %s\n", filename);
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
这个例子有效,但我想把命令行中的字符串写入char数组并将该char数组传递给fopen(),但是我得到了编译错误
Error: assignment to expression with array type filename = argv[1];
这个错误意味着什么,我该怎么做才能解决它?
我正在创建一个利用银行家算法的多线程程序,所有这些程序都经过硬编码和编译,但是available从填写用户输入的初始数组时遇到问题
#DEFINE NUMBER_OF_RESOURCES 3
int available[NUMER_OF_RESOURCES]; //available will be length of argc i.i number of total resoruces
int main(int argc, char *argv[])
{
printf("AVAILABLE RESOURCE: \n [");
//Populate Available Resource Array
for (i = 1; i < argc; i++)
{
available[i-1] = argv[i];
printf("%d ", available[i]);
}
printf("] \n\n");
}
Run Code Online (Sandbox Code Playgroud)
执行时:
./a.out 10 7 5
它打印:
[1604031496 1604031499 1604031501 ]
Run Code Online (Sandbox Code Playgroud) 我有一个库,当库被编译为独立的二进制文件时,它有自己的命令行参数解析机制,这里是代码:
int main( int argc, char **argv )
{
int result;
argc = wool_init( argc, argv );
....
}
int wool_init( int argc, char **argv )
{
us_elapsed();
argc = decode_options( argc, argv );
.....
}
Run Code Online (Sandbox Code Playgroud)
现在我将这个库静态链接到另一个具有自己的命令行解析机制和参数的库.我想在运行时使用一些参数初始化第一个库,例如我将这些参数传递给mimic命令行:
/* initializing wool run-time environment */
char **woolArg;
*woolArg[0] = "-p 3";
wool_init(1, woolArg);
Run Code Online (Sandbox Code Playgroud)
但我得到了以下错误.
:113:14: error: assignment makes integer from pointer without a cast [-Werror]
*woolArg[0] = "-p 3";
^
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
argv ×10
c ×9
argc ×3
command-line ×2
arrays ×1
c++ ×1
compilation ×1
expression ×1
flags ×1
ip ×1
linux ×1
parameters ×1
python ×1
string ×1