我正在为学校项目编写一个程序,旨在以非常基本的形式模拟Unix shell。它基本上是解析输入,然后进行fork / exec。我需要能够单独读取程序中的参数(而不是作为从命令行传递给程序的参数)。例如,我会提示:
如果输入是
谢谢!
请输入一个命令:
...我需要能够解析这两个参数...
ls
或者
ls -l
但问题在于似乎没有简单的方法来实现这一点。scanf()
会分别拉取每个参数,但我没有找到将它们放入 char*
数组中不同插槽的方法。例如,如果我执行以下操作...
char * user_input[10];
for (int i=0; i<10; i++){
user_input[i] = (char *) malloc(100*sizeof(char));
}
for (int i=0; *(user_input[i]) != '@'; i++)
{
scanf("%s", user_input[index]);
index++;
}
如果输入是
"ls -l"
,那么user_input[0]
将得到"ls"
,然后循环将重新开始,user_input[0]
将得到"-l"
。
gets
和fgets
只会获取整行。显然,这个问题可以通过逐个提取每个参数来逻辑上解决...但如果有一个我错过的简单方法,我想避免这样做。有吗?谢谢!