有人可以告诉我为什么这段代码不起作用?它确实编译。当我在命令行中输入decrypt作为argv [1]参数时,它仍然给我else输出。即argv [1]即使应该也不满意。这是一项正在进行的工作,因此请忽略其他代码
if ((argv[1] == "decrypt"))
{
printf("Decrypting...\n");
c = getc(fp1);
if (c != EOF)
{
fread(inputbuffer, sizeof(char), 50 , fp1);
printf("%s", inputbuffer);
/*while(inputbuffer[i]!=EOF)
{
fputc((inputbuffer[i] / 2) - 5, fp2);
}*/
}
}
else {printf("argv not working");}
答案 0 :(得分:11)
您需要使用strcmp()
来比较字符串:
if ((strcmp(argv[1], "decrypt") == 0)
您要比较的是不同字符串的两个内存地址,它们存储在不同的位置。这样做基本上是这样的:
if(0x00403064 == 0x002D316A) // Two memory locations { printf("Yes, equal"); }