这是我需要帮助的代码部分 -
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/