只是有关于如何处理我面临一定的问题,一个一般性的问题。我是相当新的C所以忍耐一下这里。说我有一个1000+的文本文件的文件夹,这些文件没有任何编号顺序命名,但他们是按字母顺序排列。对于我的问题,我有股票数据的文件,每个文件是本公司的各股票而得名。我想编写一个程序,将打开每个文件,读取数据发现历史低位,并将它与目前的价格并计算百分比变化,然后打印出来。搜索和计算都不是问题,问题是让程序去通过,并打开每个文件。我可以看到攻击的唯一方法是创建一个包含所有的股票代码的文本文件,具有程序读取到一个数组,然后运行一个循环,首先打开数组中的第一个文件名,执行计算,打印输出,关闭该文件,然后围绕移动到阵列中的第二个元素(下一个股票代号)环回。这将是相当简单的设置(我认为),但我真的希望避免输入了超过一千文件名到一个文本文件中。有没有更好的方式来处理呢?不是真的要求代码(除非有一些C惊人的功能,会为我做这件事)。),只是从有经验的C程序员一些建议

感谢:)

编辑:这是在Linux上,对不起,我忘了那求佛

有帮助吗?

解决方案

下的Linux / Unix(BSD,OS X,POSIX等),可以使用执行opendir / READDIR 去通过目录结构。无需生成静态文件需要更新,当文件系统有你想要的信息。如果你只想在给定时间的子集的股票,然后利用水珠会更快,还存在 SCANDIR

我不知道是什么的Win32(在Windows /平台SDK)函数被调用,如果您正在使用Visual C ++作为C编译器的开发。搜索 MSDN库应该帮助你。

其他提示

假设你在Linux上...

运行
ls /path/to/text/files > names.txt

正是你想要的。

有标准C没有函数具有一个“目录”的任何概念。您将需要使用某种特定于平台的功能来做到这一点。对于一些例子,看看此帖来自Cprogrammnig.com

就个人而言,我更喜欢使用的opendir() / readdir()方法如图所示第二示例。它如果您使用Cygwin的原生支持Linux下,也于Windows。

方法1)我只想在我只有这些包含股票数据,并没有其他文件的特定目录。然后我会使用C readdir API列出目录和迭代的所有文件在每一个执行您需要的数据处理。其股票的文件适用于通过文件名来确定。

优点:易于代码

缺点:这要看在文件存储以及他们来自哪里

方法2)改变的文件格式,因此,股票文件开始与魔码识别,这是一个代码文件,以及含有该名称的字符串。如之前通过在文件夹中的所有文件使用READDIR迭代和打开每个文件,确保该幻数被设定,并从文件中读取股票名称,并处理该数据作为

优点:比以前更加灵活。文件名不必反映股票的名称   缺点:更难代码,文件格式可以是固定的

  

但我真的很喜欢,以避免超过一千文件名打字到一个文本文件中。有没有更好的方式来处理呢?

我已经解决了完全相同的问题而回,尽管用于个人用途:)

我所做的是使用操作系统的shell命令来生成这些文件的列表,并重定向输出到一个文本文件,并有我的程序运行通过他们。

在伪代码看起来会像这样,因为我不是100%我不能定义代码知道如果这是正确的做法...

for each directory entry
    scan the filename
         extract the ticker name from the filename
         open the file
              read the data
              create a record consisting of the filename, data.....
         close the file
         add the record to a list/array...
> sort the list/array into alphabetical order based on 
  the ticker name in the filename...

您可以通过构建与文件名第一的纪录而变化,如果稍有你愿意,扫描目录中的条目中的文件名和排序他们,然后再回到列表/阵列的开始,打开每一个单独阅读数据并把它到记录然后....

希望这有助于 最好的祝福, 汤姆。

在UNIX,有手持水珠功能:

glob_t results;
memset(&results, 0, sizeof(results));
glob("*.txt", 0, NULL, &results);
for (i = 0; i < results.gl_pathc; i++)
    printf("%s\n", results.gl_pathv[i]);
globfree(&results);

在Linux或相关系统,你可以使用FTS库。它被设计用于遍历文件层次:人FTS

或者甚至一些简单如 READDIR

如果在Windows上,你可以使用自己的目录管理 API的。更具体地, 用FindFirstFile功能,使用具有通配符,会同 FindNextFile

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top