Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-对命令使用argv_C_Binary Search Tree_Argv - Fatal编程技术网

C-对命令使用argv

C-对命令使用argv,c,binary-search-tree,argv,C,Binary Search Tree,Argv,目前,我正在实现一个简单的二进制搜索树,要添加、删除、搜索或任何我想要的命令,我想在命令行中输入它,然后执行该功能 因此,下面的代码将把整数6插入到二叉树中,看看它是否被添加了“然后删除它。然后继续遍历树的后序。(添加后序显示需要实现的不仅仅是字符串和整数-作为参考) 不幸的是,在尝试确定与arg相关时调用哪个函数时,我总是在指针和整数之间得到一个比较警告 int main(int c, char *argv[2]) { typedef struct node { int value;

目前,我正在实现一个简单的二进制搜索树,要添加、删除、搜索或任何我想要的命令,我想在命令行中输入它,然后执行该功能

因此,下面的代码将把整数6插入到二叉树中,看看它是否被添加了“然后删除它。然后继续遍历树的后序。(添加后序显示需要实现的不仅仅是字符串和整数-作为参考)

不幸的是,在尝试确定与arg相关时调用哪个函数时,我总是在指针和整数之间得到一个比较警告

int main(int c, char *argv[2]) {

typedef struct node {
    int value;
    struct node * left;
    struct node * right;
}  * node;

    /* This is irrelevant and the function is in a different file */
createNode(1);
createNode(2);
createNode(3);
createNode(4);
createNode(5);
createNode(6);
createNode(7);
createNode(8);

    /* comparison warnings when deciding WHICH method to call based on the command given */
if (argv[0] == "quit") quit();
if (argv[0] == "insert") insert(argv[1]);
if (argv[0] == "delete") delete(argv[1]); 
if (argv[0] == "search") search(argv[1]);
if (argv[0] == "empty") empty();  

}注意参数定义:

char *argv[]
它的内容是:“
argv
是指向
char
的指针数组。因此,
argv[0]
属于
char*
类型,而
q
属于
char
类型。基本上,你是在比较一个字符和一个字符串

您可以将字符串与strcmp进行比较,如果字符串相等,则返回0:

    if(strcmp(argv[0], "quit") == 0)
        ...
另外,
argv[0]
通常包含程序名。第一个参数存储在
argv[1]


编辑:我发誓我在某处看到了
argv[0]=='q'
。。。编辑后,答案的第一部分是不相关的

注意参数定义:

char *argv[]
上面写着:“
argv
是指向
char
的指针数组。因此
argv[0]
属于
char*
类型,而
q
属于
char
类型。基本上,您是在将字符与字符串进行比较

您可以将字符串与strcmp进行比较,如果字符串相等,则返回0:

    if(strcmp(argv[0], "quit") == 0)
        ...
另外,
argv[0]
通常保存程序名。第一个参数存储在
argv[1]


编辑:我发誓我在某处看到了argv[0]=='q'。

请注意参数定义:

char *argv[]
它的内容是:“
argv
是指向
char
的指针数组。因此,
argv[0]
属于
char*
类型,而
q
属于
char
类型。基本上,你是在比较一个字符和一个字符串

您可以将字符串与strcmp进行比较,如果字符串相等,则返回0:

    if(strcmp(argv[0], "quit") == 0)
        ...
另外,
argv[0]
通常包含程序名。第一个参数存储在
argv[1]


编辑:我发誓我在某处看到了
argv[0]=='q'
。。。编辑后,答案的第一部分是不相关的

注意参数定义:

char *argv[]
上面写着:“
argv
是指向
char
的指针数组。因此
argv[0]
属于
char*
类型,而
q
属于
char
类型。基本上,您是在将字符与字符串进行比较

您可以将字符串与strcmp进行比较,如果字符串相等,则返回0:

    if(strcmp(argv[0], "quit") == 0)
        ...
另外,
argv[0]
通常保存程序名。第一个参数存储在
argv[1]


编辑:我发誓我在某处看到了
argv[0]=='q'
,编辑后答案的第一部分是不相关的。

main()的原型通常是

int main(int argc, char *argv[])
第一个参数,即,
argv[0]
,是程序的名称,
argv[1]
是您在命令行上为程序提供的第一个参数

要比较两个字符串,您应该使用
中的
strcmp()
而不是
=
,这就是您在问题中提到的警告的原因。因为
argv[0]
argv[1]
是指向
char
的指针,
'q'
char
(它将自动转换为
int

因此,您应该在代码中使用如下内容:

int main(int argc, char *argv[]) {
    ...

    if (strcmp(argv[1], "quit") == 0) quit();

main()
的原型通常是

int main(int argc, char *argv[])
第一个参数,即,
argv[0]
,是程序的名称,
argv[1]
是您在命令行上为程序提供的第一个参数

要比较两个字符串,您应该使用
中的
strcmp()
而不是
=
,这就是您在问题中提到的警告的原因。因为
argv[0]
argv[1]
是指向
char
的指针,
'q'
char
(它将自动转换为
int

因此,您应该在代码中使用如下内容:

int main(int argc, char *argv[]) {
    ...

    if (strcmp(argv[1], "quit") == 0) quit();

main()
的原型通常是

int main(int argc, char *argv[])
第一个参数,即,
argv[0]
,是程序的名称,
argv[1]
是您在命令行上为程序提供的第一个参数

要比较两个字符串,您应该使用
中的
strcmp()
而不是
=
,这就是您在问题中提到的警告的原因。因为
argv[0]
argv[1]
是指向
char
的指针,
'q'
char
(它将自动转换为
int

因此,您应该在代码中使用如下内容:

int main(int argc, char *argv[]) {
    ...

    if (strcmp(argv[1], "quit") == 0) quit();

main()
的原型通常是

int main(int argc, char *argv[])
第一个参数,即,
argv[0]
,是程序的名称,
argv[1]
是您在命令行上为程序提供的第一个参数

要比较两个字符串,您应该使用
中的
strcmp()
而不是
=
,这就是您在问题中提到的警告的原因。因为
argv[0]
argv[1]
是指向
char
的指针,
'q'
char
(它将自动转换为
int

因此,您应该在代码中使用如下内容:

int main(int argc, char *argv[]) {
    ...

    if (strcmp(argv[1], "quit") == 0) quit();
main()