如何将命令行参数作为字符串参数的一部分传递

时间:2014-07-19 10:15:29

标签: c command-line

这是我遇到问题的代码的一部分:

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

int main(int argc, char *argv[]) 
{
     const unsigned char key[100];
     srand(time(NULL));

     aes_init();
     encrypt(argv[1], "/home/python/encrypt/"argv[1]".encrypted", argv[3]);

     return 0;
 }

如您所见,在encrypt函数中,我要求用户通过命令行输入文件名以进行输入。对于相同功能的输出,我希望相同的名称仅由' .encrypted'附加。但是,每当我尝试编译代码时,我都会收到以下错误。

In function ‘main’:
error: expected ‘)’ before ‘argv’
error: too few arguments to function ‘encrypt’
note: declared here

我做错了什么?请帮忙。

2 个答案:

答案 0 :(得分:2)

我认为你想要像这样简单的字符串操作

snprintf(key,100,"/home/python/encrypt/%s.encrypted",argv[1]);
encrypt(argv[1],key, argv[3]);

答案 1 :(得分:1)

在C语言中,字符串操作并不像现代语言那样流畅。您必须使用库函数追加字符串。

char buffer[CCHMAXPATH];
sprintf(buffer, "/home/%s.encrypted", argv[1]);
encrypt(argv[1], buffer, argv[3]);
相关问题