-2

我想使用 unix 命令插入文件

New_IP=New_IP=strtok(Network_config,delimeter);
system("sed -i ' i '$New_IP'  ' Network_settings.txt");
4

2 回答 2

0

您不能$New_IP像在其他脚本语言中那样在 C 字符串中使用。

例如,在 c 中,您必须以这种方式插入变量

char *command;

asprintf(command, "sed -i ' i '%s'  ' Network_settings.txt", New_IP);
system(command);
free(command) // if command is useless in your code then free it
于 2013-03-18T09:35:00.827 回答
0

将这样的值作为环境变量传递给命令行,并让 shell 扩展它们是最安全的。这避免了大量的字符串转义麻烦。所以也许:

New_IP=strtok(Network_config,delimeter);
setenv("New_IP", New_IP);
system("sed -i \" i $New_IP  \" Network_settings.txt"); 
/* note backshaled \" in string above are for C compiler */

注意:如果New_IP不小心包含换行符,上面将不起作用,因为sed在使用sed i命令时希望那些用反斜杠转义。此外,允许换行将允许输入有更多的 sed 命令,这可能会做一些讨厌的事情,例如使用 sedw命令。所以New_IP应该为sed清理 definitiley ,但幸运的是,这比清理 shell 简单得多,这可以通过使用 env 变量来避免。

于 2013-03-18T09:32:03.817 回答