我正在尝试做最基本的事情,并且正在打砖墙.我试图从命令行读取文件名以便稍后在我的程序中使用,但我甚至无法从argv []中提取名称.这是代码:
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char **argv[]){
cout << "argc = " << argc << "\n\n";
cout << "Filename: " << argv[1] << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在测试它当然提供参数的输入,因为没有错误检查.这是我运行程序时得到的结果:
./a.out testfilename
Run Code Online (Sandbox Code Playgroud)
*
argc = 2
Filename: 0x7fff56e41d30
Run Code Online (Sandbox Code Playgroud)
现在我明白了argv [1]是一个指向字符数组的指针,所以这个输出是有意义的.但是,如果我进行以下更改,
cout << "Filename: " << argv[1] << "\n";
Run Code Online (Sandbox Code Playgroud)
至
cout << "Filename: " << *argv[1] << "\n";
Run Code Online (Sandbox Code Playgroud)
为了取消引用argv [1]来拉出实际的字符串,我得到了一个分段错误..
我知道要在C中使用命令行参数,你可以这样做:
int main(int argc, char **argv)
{
//use argc and argv
}
Run Code Online (Sandbox Code Playgroud)
今天,我在想这件事,我意识到我从来没有看到他们所谓的argc和argv.要求他们被称为这个或仅仅是惯例吗?如果需要,为什么会这样呢?
我可以这样做:
int main(int length, char**myinput){
//use length as you would argc and myinput
// as you would argv
}
Run Code Online (Sandbox Code Playgroud)
我还没有机会写一个程序来测试它.
我们的任务是拥有服务器 - 客户端模型....
我们应该检查命令行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) 我有一个主要功能,
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]?
尝试向我的程序添加命令行参数.所以我正在进行实验,无法弄清楚这对我生命的智能警告.它继续说它期待')',但我不知道为什么.
这是它不喜欢的代码:
// Calculate average
average = sum / ( argc – 1 );
Run Code Online (Sandbox Code Playgroud)
然后它强调减法运算符.以下是完整的计划.
#include <iostream>
int main( int argc, char *argv[] )
{
float average;
int sum = 0;
// Valid number of arguments?
if ( argc > 1 )
{
// Loop through arguments ignoring the first which is
// the name and path of this program
for ( int i = 1; i < argc; i++ )
{
// Convert cString to int
sum += atoi( …Run Code Online (Sandbox Code Playgroud) 这是geany所说的.帮助赞赏.
rec_pattern_printing.c:5:错误:'*'标记之前的语法错误
rec_pattern_printing.c:在函数`main'中:
rec_pattern_printing.c:8:错误:`argc'undeclared(首次在此函数中使用)
rec_pattern_printing.c:8:错误:(每个未声明的标识符仅报告一次
rec_pattern_printing.c:8:错误:对于它出现的每个函数.)
rec_pattern_printing.c:13:警告:函数`atoi'的隐式声明
rec_pattern_printing.c:13:错误:`argv'undeclared(首次在此函数中使用)
编译失败.
#include<stdio.h>
int main(int argc, *char argv[] )
{ int N;
if(argc<2)
printf("Not enough arguments to continue");
getche();
return 4;
N = atoi(argv[1]);
printf("%d",N);
}
Run Code Online (Sandbox Code Playgroud) 一个非常简单的C++代码,如下所示:
int main(int argc, char **argv){
std::cout << "argc: " << argc << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
编译 g++ -o hello hello.cpp
./hello u,输出是argc: 2;./hello u +,输出是argc: 3;./hello u *,输出是argc: 26,为什么26?我正在创建一个利用银行家算法的多线程程序,所有这些程序都经过硬编码和编译,但是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) 我们可以通过argvC++ 中的代码访问命令行参数,我知道。
但问题是,如果一个参数包含空格,那么我的程序就像有两个参数一样工作。
例如,如果参数是foo bar,我的程序会看到两个参数(foo和bar)。
这是我的代码:
string strParameter = string(argv[1]);
所以我该怎么做?
我有一个代码叫做main.c尝试将罗马数字转换为整数,并且我的代码必须通过命令行输入运行,顺便说一下,这是代码:
我想知道解决这个问题的最简单方法是什么。
PS是的,我知道我提供的罗马代码不完整并且没有涵盖很多情况,我会编辑它,现在我只想知道为什么我的代码没有输出