为什么这个C++程序在命令行输入两个参数仍让return 4?

为什么总是返回值为4而不执行decrypt函数?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void decrypt(const char *file);
int main(int argc,char *argv[])
{

    if(argc==2)
    {
        const char *encryptedfile=argv[1];
    decrypt(encryptedfile);
    return 0;
    }
    else
    {
    printf("%s",argv[1]);
        return 4;
    }
}
void decrypt(const char *file)
{
    FILE *encrypt=fopen(file,"rb");
    if(encrypt==NULL)
    {
        printf("fail to open"); 
    return;
    }

    char decryptedFilename[100];
    strcpy(decryptedFilename, file);
    strcat(decryptedFilename, ".dec");

    
    FILE* decrypted = fopen(decryptedFilename, "wb");
    if (decrypted == NULL)
     {
        printf("Failed to create the decrypted file.\n");
        fclose(encrypt);
        return;
     }
     int ch;
     while((ch=fgetc(encrypt))!=EOF)
     {
         unsigned char decryptedByte= (ch<<3) | (ch>>5);
         decryptedByte^=0xF0;
         fputc(decryptedByte,decrypted);
         printf("%c", decryptedByte);
     }
     fclose(encrypt);
     fclose(decrypted);
}

启动的时候有一个默认参数是可执行程序的路径 ,你输入一个参数就发现不return 4 了

可以把 argc == 2 改成 argc == 3