【发布时间】:2021-07-21 12:10:54
【问题描述】:
假设我有一个缓冲区和其他一些用于存储标准输入的指针:
char buffer[256];
char *command[3];
我正在从标准输入读取到缓冲区:
fgets(buffer, BUF_SIZE, stdin);
如果标准输入是ls -s1,我想要command[0]="ls" 和command[1]="-s1"。我也想要command[2]=NULL。
对于上下文,我稍后会尝试使用execvp(),因此我希望所有命令都以command 分隔,并在末尾使用空字符。
有人可以告诉我如何按该顺序将命令保存在命令数组中吗?
【问题讨论】:
-
使用 strtok 函数对输入进行标记
-
是的,分离输入。但是当我尝试使用
execvp()时,我收到了这个警告:warning: passing argument 1 of ‘execvp’ makes pointer from integer without a cast [-Wint-conversion] execvp(commands[0],commands);