Lab1-xargs
Opened this issue · 1 comments
zyl19980 commented
// 使用指针 p 遍历缓冲区,遇到空格或换行符时,将其替换为字符串结束符 \0
if (*p == ' ' || *p == '\n') {
*p = '\0';
// 将参数添加到参数缓冲区 argsbuf 中
*(pa++) = last_p;
last_p = p+1;
// 每当遇到换行符 \n 时,表示一组参数读取完毕,调用 run 函数执行程序,传递参数
if (*p == '\n') {
*pa = 0;
run(argv[1], argsbuf);
pa = args;
}
}
在该代码段中,*p被提前赋值 ‘\0’ if (*p == '\n')模块无法进入,所以对于多行的参数不能正确实现。我做了以下修改
// 使用指针 p 遍历缓冲区,遇到空格或换行符时,将其替换为字符串结束符 \0
if (*p == ' ' || *p == '\n') {
if(*p == ' '){
*p = '\0';
}
// 将参数添加到参数缓冲区 argsbuf 中
*(pa++) = last_p;
last_p = p+1;
// 每当遇到换行符 \n 时,表示一组参数读取完毕,调用 run 函数执行程序,传递参数
if (*p == '\n') {
*pa = 0;
run(argv[1], argsbuf);
pa = args;
}
}
Amroning commented
感谢提醒!我去检查检查