今天在写一个用文件名作为关键字的处理文件函数。之前一直不知道该怎么写,用其他的方法又嫌太麻烦,之后用Google搜了下,发现了《用enum类型数据解决switch case 选择字符串的问题》这篇文章,文章源地址是:
http://qq164587043.blog.51cto.com/261469/67306,作者信息:,其版权声明:
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://qq164587043.blog.51cto.com/261469/67306.觉得文章挺不错的,链接了过来,通过借鉴之后自己的程序也出来了,在此向文章主聊表感谢~~~~。
自己程序的运行环境:Ubuntu 8.04
运行命令:
ly@ly-desktop:~/linux$ sudo ./enumfile /sys/block/sda
运行结果:
ly@ly-desktop:~/linux$ sudo ./enumfile /sys/block/sda
参数传递错误!
参数传递错误!
参数传递错误!
dev 该数据表示:冒号前的数据是“主设备号”,冒号后的数据“次设备号”。
range 该数据表示:对磁盘操作的操作队列。
removable 该数据表示“可移动的磁盘数”。
size 该数据表示“该分区大小”。
参数传递错误!
capability 该数据表示“能力”。
参数传递错误!
参数传递错误!
参数传递错误!
参数传递错误!
参数传递错误!
参数传递错误!
参数传递错误!
参数传递错误!
还在初级学习阶段,小菜鸟一只,嘿嘿~~,不足之处非常欢迎大家多多指教!先在此谢谢~~。
源程序:
/*filename:enumfile*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
enum filename {capability,removable,size,dev,range};
const char *filenames[]={"capability","removable","size","dev","range"};
void usage(char *sourcename)
{
printf("Source name:%s\n",sourcename);
exit(1);
}
main(int argc,char * *argv)
{
char sourcefile[256];
DIR *dirp;
struct dirent *direntp;
FILE *fp;
enum filename i;
if(argc!=2)
{
printf("运行命令中缺少要打开的目录名!\n");
exit(1);
}
if((dirp=opendir(argv[1]))==NULL)
{
printf("Could not open directory:%s\n",argv[1]);
exit(1);
}
while((direntp=readdir(dirp))!=NULL)
{
for(i=capability;i<=range;i++)
{
if(strcmp(direntp->d_name,filenames[i])==0)
break;
}
switch(i)
{
case capability: printf("%s 该数据表示“能力”。\n",direntp->d_name); break;
case removable : printf("%s 该数据表示“可移动的磁盘数”。\n",direntp->d_name); break;
case size : printf("%s 该数据表示“该分区大小”。\n",direntp->d_name); break;
case dev : printf("%s 该数据表示:冒号前的数据是“主设备号”,冒号后的数据“次设备号”。\n",direntp->d_name); break;
case range : printf("%s 该数据表示:对磁盘操作的操作队列。\n",direntp->d_name); break;
default : printf("参数传递错误!\n"); break;
}
}
}
|
阅读(4414) | 评论(0) | 转发(0) |