标签: argc

char**argv []在尝试从命令行获取输入时出现段错误

我正在尝试做最基本的事情,并且正在打砖墙.我试图从命令行读取文件名以便稍后在我的程序中使用,但我甚至无法从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++ input argv argc

1
推荐指数
1
解决办法
262
查看次数

传递给main()的args的名称是否重要

我知道要在C中使用命令行参数,你可以这样做:

int main(int argc, char **argv)
{
//use argc and argv
}
Run Code Online (Sandbox Code Playgroud)

今天,我在想这件事,我意识到我从来没有看到他们所谓的argcargv.要求他们被称为这个或仅仅是惯例吗?如果需要,为什么会这样呢?

我可以这样做:

int main(int length, char**myinput){
//use length as you would argc and myinput
// as you would argv
}
Run Code Online (Sandbox Code Playgroud)

我还没有机会写一个程序来测试它.

c argv command-line-arguments argc

1
推荐指数
1
解决办法
46
查看次数

C编程 - 命令行Arg - 尝试获取IP地址

我们的任务是拥有服务器 - 客户端模型....

我们应该检查命令行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)

c ip argv argc

0
推荐指数
1
解决办法
1959
查看次数

参数类型在C程序中有所区别

我有一个主要功能,

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 argv command-line-arguments argc

0
推荐指数
1
解决办法
1686
查看次数

麻烦与argc和argv

尝试向我的程序添加命令行参数.所以我正在进行实验,无法弄清楚这对我生命的智能警告.它继续说它期待')',但我不知道为什么.

这是它不喜欢的代码:

    // 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)

c++ argv argc

0
推荐指数
1
解决办法
906
查看次数

argc和argv没有运行

这是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 cmd argv argc

0
推荐指数
1
解决办法
8545
查看次数

c ++ main函数,如果命令行参数包含*,则argc值很奇怪

一个非常简单的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

c++ argc

0
推荐指数
1
解决办法
115
查看次数

C - 在数组中存储main()参数

我正在创建一个利用银行家算法的多线程程序,所有这些程序都经过硬编码和编译,但是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)

c program-entry-point argv argc

0
推荐指数
1
解决办法
71
查看次数

如何将包含空格字符的命令行参数传递给我的 C++ 程序?

我们可以通过argvC++ 中的代码访问命令行参数,我知道。

但问题是,如果一个参数包含空格,那么我的程序就像有两个参数一样工作。

例如,如果参数是foo bar,我的程序会看到两个参数(foobar)。

这是我的代码:

string strParameter = string(argv[1]);

所以我该怎么做?

c++ whitespace dev-c++ argv argc

0
推荐指数
1
解决办法
53
查看次数

当我尝试在 shell 中使用命令行参数运行此代码时,为什么会出现错误?

我有一个代码叫做main.c尝试将罗马数字转换为整数,并且我的代码必须通过命令行输入运行,顺便说一下,这是代码:

我想知道解决这个问题的最简单方法是什么。

PS是的,我知道我提供的罗马代码不完整并且没有涵盖很多情况,我会编辑它,现在我只想知道为什么我的代码没有输出

c shell argv argc roman-numerals

0
推荐指数
1
解决办法
38
查看次数