【发布时间】:2013-04-28 01:18:31
【问题描述】:
目前我正在读取一行字符串并对其进行解析。我正在使用以下变量来执行此操作:char **parsed 和 char *parsed_arguments[64]。这是我用来解析它的代码:
char newcommand []
parsed = parsed_arguments;
*parsed++ = strtok(newcommand,SEPARATORS); // tokenize input
while ((*parsed++ = strtok(NULL,SEPARATORS)))
那部分很好而且很花哨,但是当我尝试添加到 parsed_arguments 时出现了我的问题。我想要完成的是从文件中读取文本,将其放入char buffer[],对其进行标记,并将其添加到parsed_arguments,这样我就可以使用execvp 将这些参数传递给程序。到目前为止,我能够阅读文本并将其放入我的缓冲区中,我什至尝试过对其进行标记,但最后一部分让我感到困惑。以下是详细说明我正在处理的代码的更多代码:
if(file_In)
{
//strcpy(input_File_Name,parsed_arguments[input_Index]);
switch(pid =fork())
{
case -1:
printf("fork error, aborting\n");
abort();
case 0:
parsed_arguments[input_Index-1] = NULL;
input_File = freopen(parsed_arguments[input_Index],"r",stdin);
fgets(buffer, 1023, input_File);
buf = parsed_buf;
*buf++ = strtok(buffer,SEPARATORS); // tokenize input
while ((*buf++ = strtok(NULL,SEPARATORS)))
//strcat(parsed, buf); // invalid
printf("The buffer holds: %s\n", buffer);
execvp(parsed_arguments[0],parsed_arguments);
break;
default:
waitpid(pid,NULL,WUNTRACED);
【问题讨论】: