[英]C command line password
所以我正在尝试创建一个C程序,你必须在命令行输入密码,比如./login password1如果密码是password1,它会说些什么。 如果没有,它会打印另一条消息。 这是我现在的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if (argc < 2) {
printf("usage: %s <password>\n", argv[0]);
}
char pass = "password";
if (argc == pass) {
printf("Right\n");
} else {
printf("Wrong\n");
}
}
但它不会工作。
char pass = "password";
您正在尝试将字符串分配给char
。 那不行! 相反,您需要将pass
声明为char[]
如下所示:
char pass[] = "password";
下一个问题:
if(argc == pass)
argc
是传递给程序的命令行参数的数量(包括作为第一个的程序名称)。 你想要的是argv
,它包含实际的参数。 具体来说,你可能想要argv[1]
。
你不能只是去argv[1] == pass
因为它比较了两个字符串的位置。 要比较字符串,您需要使用strcmp()
。 此函数比较两个字符串,如果它们相等则返回0(这是有充分理由的,但现在就保留它)。 前者就像比较两个房子,检查他们是否有完全相同的街道地址; 后者就像把房子相互比较一样。 (从@caf嗤之以鼻)
这条线变成:
if (strcmp(argv[1], pass) == 0)
把这些修复放在一起,它应该工作。 还请努力改进代码的缩进。 它会让你更容易阅读,不仅仅是为了别人,而是在几周之内。
您将argc
(命令行参数的数量)与"password"
字符串指针进行比较。
首先,您需要使用argv[1]
而不是argc
。 您还需要使用合适的strcmp
函数,而不仅仅是比较指针。
最后,出于安全考虑,通过命令行输入密码通常是个坏主意。 在许多系统上,命令行可能对其他用户可见(例如,通过“ps”命令)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.