【问题标题】:argc and argv aren't running [closed]argc 和 argv 没有运行 [关闭]
【发布时间】:2016-08-11 20:55:54
【问题描述】:

我试图在 Ubuntu 下运行这段代码,但是当我运行下面的代码时:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

int main(int argc , char agrv[3]){
  int pid ,sig;
  sig = atoi( argv[1]);
  pid = atoi( argv[2]);
  kill(pid,sig);
  return(0);
}

上面写着

ex02.c:10:13: error: ‘argv’ undeclared (first use in this function)
 sig = atoi( argv[1]);

【问题讨论】:

  • 正确的声明是int main (int argc, char *argv[])argv不是char数组,而是char指针数组。
  • 脚本?乌本托??真的???
  • 此外,argvagrv 是不同的名称 - 你都使用过。
  • 我对@LPs的评论:仔细看看argv的参数声明。计算机是不宽容的。不要使用草率的语法。并正确格式化和缩进你的代码。
  • 语义很重要——你不是在运行上面的代码,而是在编译它。

标签: c linux pid


【解决方案1】:

main的定义行出错了,argvchar*字符串的数组

int main(int argc, char *argv[])
{
/*
other code here
*/

}

【讨论】:

  • ... 是 指向char的指针数组 可能会更好。
  • 没有我的 char* 字符串数组。
  • 谢谢你们,我现在真的很傻。
【解决方案2】:

您的agrv 打错字了,main 的签名是int main(int argv, char *argv[])

argv 是一个 char * 数组,以 NULL 结尾。数组中直到NULL 的每个元素都代表命令行中的一个字符串。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

int main(int argc, char *argv[]){
  int pid, sig;
  sig = atoi(argv[1]);
  pid = atoi(argv[2]);
  kill(pid, sig);
  return(0);
}

【讨论】:

  • 字符串....请不要再说一次:|
  • 嘿,来吧,这是一个 C 字符串。
  • C 中没有字符串。
【解决方案3】:

问题在于你的main()的函数头。

应该是这样的。

int main(int argc, char *argv[])
{
    //Function Body
    return 0;
}

形式参数 argv 是 array of pointers to char。并且每个指向 char 的指针都包含一个传递给程序的参数(另外,程序的名称将由 argv[0] 指向)。

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 2011-04-15
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多