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