所以我试图创建一个 C 程序,你必须在命令行上输入密码,比如
./登录密码1
如果密码是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)
将这些修复程序放在一起,它应该可以工作。还请努力改进代码的缩进。这将使阅读变得更加容易,不仅对于其他人,而且在几周后您自己也是如此。
关于C 命令行密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4610889/