argc argv问题

时间:2011-12-22 15:31:58

标签: c argv

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

1 个答案:

答案 0 :(得分:11)

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

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

More detail

  

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

if(0x00403064 == 0x002D316A) // Two memory locations
{
    printf("Yes, equal");
}