最近学linux下C编程,学到文件方面,编写了一个模仿命令ls的C语言程序,先贴代码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<dirent.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
void printmode(mode_t modes)
{
int i=0;
char descrip[11];
static short octarray[9]={0400,0200,0100,0040,0020,0010,0004,0002,0001};
static char perms[10]="rwxrwxrwx";
if(S_ISREG(modes)) descrip[0]='-'; //Add file type
else if(S_ISDIR(modes)) descrip[0]='d';
else
{
printf("\nUnknown mode\n");
return;
}
for(i=1;i<10;i++)
{
if(modes&octarray[i-1])
descrip[i]=perms[i-1];
else
descrip[i]='-';
}
for(i=0;i<10;i++)
{
printf("%c",descrip[i]);
}
printf(" ");
}
void printdir(char path[])
{
DIR *dir;
struct dirent *entry;
struct stat s