error: too many arguments to function ‘system’ system("feh --bg-fill ", image_paths[current_image]); ^
时间: 2024-10-18 16:19:21 浏览: 34
这个错误是因为在调用 `system` 函数时传入了过多的参数。`system` 函数原意是用来运行 shell 命令,它期望接收到一个字符串作为命令行参数。在上面的代码片段中,`system` 被用来执行 `feh` 命令,但后面跟了一个额外的空字符串 " " 和一个变量 `image_paths[current_image]`。
修正后的代码应该直接将文件名字符串作为 `system` 的参数,不需要额外的空格:
```c
system("feh --bg-fill " + image_paths[current_image]);
```
应改为:
```c
system("feh --bg-fill " + image_paths[current_image]); // 删除多余的空格
```
如果你正在使用 C 语言,可以考虑直接用 `execlp` 或 `execl` 函数,它们更安全并且能避免这样的问题:
```c
execlp("feh", "feh", "--bg-fill", image_paths[current_image], (char *)NULL);
```
或者:
```c
execl("/usr/bin/feh", "feh", "--bg-fill", image_paths[current_image], (char *)NULL);
```
这里假设 `feh` 可以通过绝对路径 `/usr/bin/feh` 来调用。如果不在 `/usr/bin` 下,则需提供正确的路径。
阅读全文