0

有人可以告诉我为什么这段代码不起作用吗?它确实编译。当我在命令行中输入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");}
4

1 回答 1

11

您需要使用strcmp()来比较字符串:

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

更多细节

您正在比较的是不同字符串的两个内存地址,它们存储在不同的位置。这样做基本上看起来像这样:

if(0x00403064 == 0x002D316A) // Two memory locations
{
    printf("Yes, equal");
}
于 2011-12-22T15:32:55.180 回答