|
#include <sys/types.h>
#include <sys/stat.h>
#include "ourhdr.h"
int main( int argc,char *argv[] )
{
int i;
struct stat buf;
char *ptr;
for (i=1 ; i<argc ; i++) {
printf ("%s: ",argv);
if(lstat(argv, &buf) <0) {
fprintf(stderr,"lstat error\n");
continue;
}
if (S_ISREG(buf.st_mode)) ptr= "regular file";
else if (S_ISDIR(buf.st_mode)) ptr= "directory file";
else if (S_ISCHR(buf.st_mode)) ptr= "character file";
else if (S_ISBLK(buf.st_mode)) ptr= "block special";
else if (S_ISFIFO(buf.st_mode)) prt= "fifo file";
else if (S_ISLNK(buf.st_mode)) ptr= "symbolic link";
else if (S_ISSOCK(buf,st_mode)) ptr= "socket";
else ptr= "unknown mode";
printf("%s\n", ptr);
}
exit (0);
}
这是check的结果:
# gcc -c print_file_type_cp.c
print_file_type_cp.c: In function `main':
print_file_type_cp.c:19: `prt' undeclared (first use in this function)
print_file_type_cp.c:19: (Each undeclared identifier is reported only once
print_file_type_cp.c:19: for each function it appears in.)
print_file_type_cp.c:21:44: macro "S_ISSOCK" passed 2 arguments, but takes just 1
print_file_type_cp.c:21: `S_ISSOCK' undeclared (first use in this function)
请帮指出错误,先谢了!!好奇怪:confused: |
|