Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将命令行参数作为字符串参数的一部分传递_C_Command Line - Fatal编程技术网

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

C 如何将命令行参数作为字符串参数的一部分传递,c,command-line,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/enc

这是我面临的代码问题的一部分:

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

我做错了什么?请帮忙。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


“/home/python/encrypt/“argv[1]”。encrypted“
您就是这样操作它的?这里需要什么?代码工作正常,如果我只将其命名为“outfile.encrypted”,我会得到所需的输出(加密文件),但我希望每个输出文件都有一个不同的名称,即,原始名称后面加“.encrypted”。就像“trial.doc”变成了“trial.doc.encrypted”。
“/home/python/encrypt/“argv[1]”。encrypted“
这就是你如何操作它的?这里需要什么?代码工作正常,如果我只将其命名为“outfile.encrypted”,我会得到所需的输出(加密文件),但我希望每个输出文件都有一个不同的名称,即,原始名称后面加“.encrypted”。就像“trial.doc”变成了“trial.doc.encrypted”。
“/home/python/encrypt/“argv[1]”。encrypted“
这就是你如何操作它的?这里需要什么?代码工作正常,如果我只将其命名为“outfile.encrypted”,我会得到所需的输出(加密文件),但我希望每个输出文件都有一个不同的名称,即,原始名称后面加“.encrypted”。就像“trial.doc”变成了“trial.doc.encrypted”。
“/home/python/encrypt/“argv[1]”。encrypted“
这就是你如何操作它的?这里需要什么?代码工作正常,如果我只将其命名为“outfile.encrypted”,我会得到所需的输出(加密文件),但我希望每个输出文件都有一个不同的名称,即,原始名称后面加“.encrypted”。类似于“trial.doc”变成“trial.doc.encrypted”。请注意,
snprintf
的第二个参数包含空字符,因此字符串的最大可能长度(即
strlen
)为99。较长的字符串只是被截断。所以,我尝试了你所说的,这就是我得到的-在函数“main”中警告:传递“snprintf”的参数1会丢弃指针目标类型中的“const”限定符[默认启用]/usr/include/stdio.h:387:12:注意:应为“char*restrict”,但参数类型为“const unsigned char*”,只需从
键的定义中删除
const
修改器即可@AnkiJu@alk好的,我做到了。程序已编译!:)但现在,我面临着另一个问题——关于如何调试(小型)程序的分段错误(内核转储),您可能想在这里阅读:@AnkiJuNote,
snprintf
的第二个参数包括空字符,所以字符串的最大可能长度(即
strlen
)是99。较长的字符串只是被截断。所以,我尝试了你所说的,这就是我得到的-在函数“main”中警告:传递“snprintf”的参数1会丢弃指针目标类型中的“const”限定符[默认启用]/usr/include/stdio.h:387:12:注意:应为“char*restrict”,但参数类型为“const unsigned char*”,只需从
键的定义中删除
const
修改器即可@AnkiJu@alk好的,我做到了。程序已编译!:)但现在,我面临着另一个问题——关于如何调试(小型)程序的分段错误(内核转储),您可能想在这里阅读:@AnkiJuNote,
snprintf
的第二个参数包括空字符,所以字符串的最大可能长度(即
strlen
)是99。较长的字符串只是被截断。所以,我尝试了你所说的,这就是我得到的-在函数“main”中警告:传递“snprintf”的参数1会丢弃指针目标类型中的“const”限定符[默认启用]/usr/include/stdio.h:387:12:注意:应为“char*restrict”,但参数类型为“const unsigned char*”,只需从
键的定义中删除
const
修改器即可@AnkiJu@alk好的,我做到了。程序已编译!:)但现在,我面临着另一个问题——关于如何调试(小型)程序的分段错误(内核转储),您可能想在这里阅读:@AnkiJuNote,
snprintf
的第二个参数包括空字符,所以字符串的最大可能长度(即
strlen
)是99。较长的字符串只是被截断。所以,我尝试了你所说的,这就是我得到的-在函数“main”中警告:传递“snprintf”的参数1会丢弃指针目标类型中的“const”限定符[默认启用]/usr/include/stdio.h:387:12:注意:应为“char*restrict”,但参数类型为“const unsigned char*”,只需从
键的定义中删除
const
修改器即可@AnkiJu@alk好的,我做到了。程序已编译!:)但现在,我面临着另一个问题——关于如何调试(小型)程序的分段错误(内核转储),您可能想在这里阅读:@AnkiJuThis有潜在的UB(除非输入是“可信的”),当
strlen(argv[1])>=CCHMAXPATH-strlen(“/home/python/encrypt/”.encrypted”)
sprintf
自动附加空字符)1.这个有茶壶