怎么实现读取一个目录下所有匹配特定名字格式的文件,代码最好能跨平台(windows,linux)

如何实现读取一个目录下所有匹配特定名字格式的文件,代码最好能跨平台(windows,linux)
C/C++: 
如何读取一个目录下所有的文件(最好能带文件名字匹配功能,比如,只读取后缀为txt的文件)

分别在windows(VC++)和linux下怎么实现?

可能做到不用修改代码的移植吗?(因为小弟还不太熟悉linux下面的编程环境,一直在用VC++,但是最后还得把程序弄到linux下面去)

------解决方案--------------------
C/C++ code

//Dev C++ 测试通过:利用链表实现目录内所有文件列表显示

#include <stdio.h>
#include <dirent.h>
/*#include <alloc.h>*/
#include <string.h>

int main(int argc,char *argv[])
{
  DIR *directory_pointer;
  struct dirent *entry;
  struct FileList
  {
    char filename[64];
    struct FileList *next;
  }start,*node;
  if (argc!=2)
  {
    printf("Must specify a directory\n");
    exit(1);
  }
  if ((directory_pointer=opendir(argv[1]))==NULL)
    printf("Error opening %s\n",argv[1]);
  else
  {
    start.next=NULL;
    node=&start;
    while ((entry=readdir(directory_pointer))!=NULL)
    {
      node->next=(struct FileList *)malloc(sizeof(struct FileList));
      node=node->next;
      strcpy(node->filename,entry->d_name);
      node->next=NULL;
    }
    closedir(directory_pointer);
    node=start.next;
    while(node)
    {
      printf("%s\n",node->filename);
      node=node->next;
    }
  }
  return 0;
}

------解决方案--------------------
至于对文件名的过滤,那就非常简单,比如定义的规则是txt文件,那么可以比较filename的末尾四个字符是否是".txt"即可:
if( !strcmp(".txt", filename+strlen(filename)-strlen(".txt")) )
{...}
------解决方案--------------------
如果只是后缀的话,比较简单,如果是其他有通配符的表示的文件名,要用正则表达式了。
遍历目录用opendir函数,有个目录的结构体。这个是系统的函数,windows和linux有点不一样。可以把楼上的代码用宏来判断是windows还是linux,分别调用不同的函数实现。