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.这个有茶壶