gpt4 book ai didi

c - C 中的变量 popen 调用

转载 作者:行者123 更新时间:2023-11-30 14:30:49 27 4
gpt4 key购买 nike

我正在尝试在 Win32 C 程序中执行 MS-DOS DEL 命令,并且我已经知道 systempopen 可以用于此目的。然而,问题是两者都需要字符串文字(类型 const char)作为命令,并且我需要类似于此 Perl 代码的 DOS 等效项(或多或少,不知道它是否实际上)作品):

my $user = $ENV{'USERNAME'};
my $directory = $ENV{'HOME'};
my $files = system("dir " . $directory);
my $pattern = "s/(\d{7,8})|(\"" . $user . "\")/";
$files ~= $pattern;
system("rm " . $files);

显然必须使用rm命令的字符串文字。 C 中是否有其他一些子进程函数允许 char 数组作为进程名称的参数?

最佳答案

这很痛苦,但您最终可能不得不取消转义所有转义字符。 "\blah" -> "\\blah" 等。查看它们的列表 here .

根据您的代码,我会做类似的事情(大致):

pattern = "s/(\\d{7,8})|(\\\"%s\\\")/";
char buff[100];
sprintf(buff, getenv("HOME"));
system(buff);

这个想法是指定所有转义的麻烦字符的模式,即 \\\",然后使用 sprintf获取最终的格式字符串。 getenv 得到的字符串不会有转义字符问题,可以直接使用。

关于c - C 中的变量 popen 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2709252/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com