Be_lieveYourself 2023-05-18 16:34 采纳率: 33.3%
浏览 21
已结题

为什么这个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);
}
  • 写回答

1条回答 默认 最新

  • Loup&卡普 2023-05-18 17:03
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月18日

悬赏问题

  • ¥15 TLE9879QXA40 电机驱动
  • ¥15 clion的参数提示怎么关闭
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀
  • ¥15 mifare plus卡认证
  • ¥30 LSTM预测结果是一条直线