我有點卡在這裏。C將大文本文件加載到數組中
我需要將大約200萬個固定長度的字符串加載到一個數組中,這些字符串都在一行文本文件中。 字符串是十六進制的,長度爲40個字符。
在ansi c中完成此操作的最佳方法是什麼?
查找速度很重要。
加載字符串後,我必須搜索整個數組以查找循環生成的匹配。
我有兩個文件可以說一個bigfile和hugefile,都包含十六進制值(哈希),我循環通過巨大的文件與此代碼。
....
FILE *file;
if ((file = fopen(filenamein, "r")) == 0)
{
fprintf(stderr, "%s: failed to open file %s\n", argv[0], filenamein);
exit(1);
}
while (fgets(keyword, sizeof(keyword), file) != NULL)
{
if ((pos = strchr(keyword, '\n')) != NULL)
*pos = '\0';
....
}
....
之後需要在bigfile中查找關鍵字,lookuptime是一個關鍵因素。 從我迄今瞭解到的文件來看,這個文件對於堆棧來說很大。
你必須通過數組來查看匹配什麼?完整的價值?你能詳細說明你在用這個數組做什麼,最好用一個例子嗎?它是真正的文本,你必須加載,或將數字表示(解析十六進制數字)嗎?你試過什麼了?什麼不起作用?你卡在哪裏?這是C問題還是C++問題? (這是兩種截然不同的語言......) – Cameron 2014-11-05 19:07:20
如果是我,我會在找到文件的大小之後用一個fread來吸取它們。然後我會用qsort()對它們進行排序,然後用bsearch搜索它們。 – 2014-11-05 19:13:35
你開始的很好,你能用這個文檔中的例子來進一步提高你嗎? http://msdn.microsoft.com/en-us/library/w0k41tbs.aspx – 2014-11-05 19:33:13