char *args[32];
char **next = args;
char *temp = NULL;
char *quotes = NULL;
temp = strtok(line, " \n&");
while (temp != NULL) {
if (strncmp(temp, "\"", 1) == 0) {
//int i = strlen(temp);
printf("first if");
quotes = strtok(temp, "\"");
} else if (strncmp(temp, "\"", 1) != 0) {
*next++ = temp;
temp = strtok(NULL, " \n&");
}
}
如果字符串的一部分用引号引起来,我很难理解如何仍然保留空格。例如,如果我希望 execvp() 执行以下命令:diff "space name.txt" sample.txt,它应该将 diff 保存在 args[0],space name.txt 保存在 args[1],sample.txt 保存在 args[ 2]。
我不太确定如何实现这一点,我已经尝试了几种不同的 if 语句逻辑方式,但我并不完全在那里。目前我正在尝试做一些简单的事情,例如:ls“文件夹”,但是,它卡在了打印我的 printf() 语句的 while 循环中。
我知道这不是一个问题 - 它更多地解释了我正在努力实现的目标以及到目前为止我在哪里,但我遇到了麻烦,并且真的很感激一些关于逻辑应该如何的提示。