c - 如何将用户输入的名称作为参数传递给下面给出的函数?

标签 c encryption

这是我需要帮助的代码部分 -

include <stdlib.h>
include <time.h>
include <stdio.h>
include "aes.h"

void encrypt(const char *fileIn, const char *fileOut,
const unsigned char *key);

void decrypt(const char *fileIn, const char *fileOut,
const unsigned char *key); 

int main()
{
const unsigned char key[] = "my key";
srand(time(NULL));

aes_init();
encrypt( "main.c", "main.c.encrypted", key);
decrypt("main.c.encrypted", "main.c.decrypted", key); 
return 0;
}
<小时/>

现在,我所做的是,每次运行程序之前......我转到代码并更改文件名,例如......

encrypt("main.c", "main.c.encrypted", key);
decrypt("main.c.encrypted", "main.c.decrypted", key);

encrypt("trial.doc", "trial.doc.encrypted", key);
decrypt("trial.doc.encrypted", "trial.doc.decrypted", key);
<小时/>

但是,我希望用户能够在程序运行时输入这些文件名。

我该怎么做?

最佳答案

用于将参数传递给程序,

int main (int argc, char *argv[]) { ...

是您要使用的main原型(prototype),然后您可以获取参数计数和参数本身。

例如,以下 C 程序打印出其所有参数,包括代表可执行文件的参数:

#include <stdio.h>
int main (int argc, char *argv[]) {
    for (int i = 0; i < argc; i++)
        printf ("argv[%d] = '%s'\n", i, argv[i]);
    return 0;
}

如果你运行它:

./myprog three point one four one five nine

您将看到输出:

argv[0] = './myprog'
argv[1] = 'three'
argv[2] = 'point'
argv[3] = 'one'
argv[4] = 'four'
argv[5] = 'one'
argv[6] = 'five'
argv[7] = 'nine'
<小时/>

另一种选择是从程序内输入它们,为此,您可以使用安全输入功能,例如所示的here .

安全输入函数通常会使用fgets()来确保不会发生缓冲区溢出。上面链接的函数具有各种其他方便的功能,例如文件结尾检测、处理太长的行(检测和纠正)和提示。

关于c - 如何将用户输入的名称作为参数传递给下面给出的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23774898/

相关文章:

c - 结构比较

c - f(&a) 可以在 C 中运行吗?

c - 如何将目录永久添加到 GCC 包含搜索路径?

c - malloc 中的指针数组是什么意思?

c - BST表实现段错误(C)

使用 BouncyCaSTLe 弃用方法的 Paypal 按钮加密的 Java 代码 - 如何修复?

java - 在 Java Tomcat Web 应用程序中存储加密 key 以加密/解密数据库中的敏感数据的最佳做法是什么?

python - 有谁有 Google App Engine 上 python 中 AES 加密的代码示例吗?

c# - 将 Salt 作为明文存储在包含密文的文件中

c++ - 尝试从 Visual Studios C++ 中的加密字符串输出解密字符串时出现逻辑错误