标签:c file-io directory file-extension
是否可以在c中计算目录中具有给定扩展名的文件数?
我正在编写一个程序,在这里做这样的事情会很好(伪代码):
if (file_extension == ".foo")
num_files++;
for (int i = 0; i < num_files; i++)
// do something
显然,这个程序要复杂得多,但这应该让你对我正在尝试做的事情有了一般的了解.
如果这不可能,请告诉我.
谢谢!
解决方法:
C或C标准本身没有关于目录处理的任何内容,但几乎任何有价值的操作系统都会有这样的野兽,其中一个例子是findfirst / findnext函数或readdir.
你这样做的方法是对这些函数进行简单的循环,检查为你想要的扩展返回的字符串的结尾.
就像是:
char *fspec = findfirst("/tmp");
while (fspec != NULL) {
int len = strlen (fspec);
if (len >= 4) {
if (strcmp (".foo", fspec + len - 4) == 0) {
printf ("%s\n", fspec);
}
}
fspec = findnext();
}
如上所述,您将用于遍历目录的实际功能是特定于操作系统的.
对于UNIX,它几乎肯定会使用opendir,readdir和closedir.这段代码是一个很好的起点:
#include <dirent.h>
int len;
struct dirent *pDirent;
DIR *pDir;
pDir = opendir("/tmp");
if (pDir != NULL) {
while ((pDirent = readdir(pDir)) != NULL) {
len = strlen (pDirent->d_name);
if (len >= 4) {
if (strcmp (".foo", &(pDirent->d_name[len - 4])) == 0) {
printf ("%s\n", pDirent->d_name);
}
}
}
closedir (pDir);
}
标签:c,file-io,directory,file-extension 来源: https://codeday.me/bug/20191009/1876626.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。