我正在使用Linux编写一个c程序。但在此期间,我使用Linux终端删除文件或复制文件以及其他一些内容。
我这样做的方法是使用c:
中的命令system ("rm in/file.txt");
但是,如果我希望文件Name是我在c中创建的变量,如果:
const char *signers[] = {"newfilename.txt"};
当我尝试写作时:
system ("rm in/signers"); // this does not work obviously since it is all in double quotes. But I can't seem to find the right way to do it
不知怎的,我需要使用这个系统命令以及rm和in /然后我的变量。 如果这是一个基本问题,我很抱歉,我是新手。
答案 0 :(得分:6)
您需要创建一个新字符串,构成您传递给system()的字符串。
e.g。
char command[256];
const char *signers[] = {"newfilename.txt"};
snprintf(command, sizeof command, "rm %s", signers[0]);
printf("Running command '%s'\n", command);
system(command);
但是,当您拥有C API时,无需执行现有命令。您可以使用unix特定的unlink函数:
int rc = unlink(signers[0]);
if (rc != 0) {
perror("unlink failed");
或标准C删除功能:
int rc = remove(signers[0]);
if (rc != 0) {
perror("remove failed");