在 /bin 中搜索带有 stat 的文件

searching for files with stat in /bin

嗨,我正在尝试编写一个代码来搜索 /bin 目录中的文件并确定该文件是否确实存在,我的代码总是出错,我真的不明白为什么你能给我一个线索?

#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h> 
#include <sys/types.h>
#include <sys/stat.h>
#define MAX 4096

int main() 
{  
    while(1)
    {
       char input[MAX];
       struct stat buf;
       const char *space=" ";
       fgets(input, MAX, stdin);
       char *token;
       token = strtok(input, space);

            if (!strncmp(token,"/bin/",5))
                {    
                    if (stat(token,&buf)==-1)
                    {
                       perror(token);
                       printf( "ERROR\n");
                    }
                    else
                    {  
                 printf("FILE EXISTS\n");     
                    }  
                 }
    }
 return 0;
}   

这是输入及其内容 returns:

/bin/ls

: No such file or directory
ERROR

免责声明:我刚刚更正了问题并添加了更多内容,以便你们更好地理解问题,不要对我尖叫。

来自fgets manual

If a newline is read, it is stored into the buffer.

也就是说,代码当前尝试检查 "/bin/ls\n" 而不是 "/bin/ls"

通过首先去除尾随的换行符来修复。一种方式:

const char *delim = " \n";
fgets(input, MAX, stdin);
const char *token = strtok(input, delim);