在linux终端上使用自己创建的C变量

时间:2015-10-30 08:39:40

标签: c linux

我正在使用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 /然后我的变量。 如果这是一个基本问题,我很抱歉,我是新手。

1 个答案:

答案 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");