最近在读《unix 环境高级编程》没想到才读几页遇到困难,原书程序清单1-15中一个读取命令并执行的例子

自己按照着写了一遍为什么不对,求解释

=====================code =====================

#include "apue.h"

#include <sys/wait.h>
#include <myerr.h>
int main(void)
{
    char buf[MAXLINE];
    pid_t pid;
    int status;
    
    printf("%% ");
    while (fgets(buf, MAXLINE, stdin)!=NULL) {
        if(buf[strlen(buf) - 1] == "\n")
            buf[strlen(buf) - 1] = 0;
        if(pid=fork()<0){
            err_sys("fork error");
        }else if(pid == 0){ 
            execlp(buf, buf, (char *) 0); 
            err_ret("couldn't execute %s", buf);
            exit(127);
        }   
    
        if((pid = waitpid(pid, &status, 0))<0)
            err_sys("waitpid error");
        printf("%%") ;   
    
    }    


exit(0);




}




=======================执行结果=================

% date

couldn't execute date
: No such file or directory couldn't execute date
: No such file or directory [zhangkai6@demo109 c_lab]$