Bir dosyanın içeriği için bellek() ile ayırın: \ n) içeriğine ayırmaya çalışıyorum.Bir dosyanın (tüm içeriğin) boyutunu nasıl belirleyebilirim, böylece bir kerede bunun için bellek ayırabilir miyim?
Daha büyük boyutlu dosyalarla kullanılabilmesi için 16000'i nasıl değiştirebilirim?
Kodum:
typedef struct node {
bool is_word;
struct node* children[27];
} node;
node* root;
bool load(const char* dictionary)
{
FILE *fp;
fp = fopen(dictionary, "rb");
node* node_bucket = calloc(16000, sizeof(node));
node* next_free_node = node_bucket;
// compute...
// to later free the memory with another function
root = node_bucket;
}
Teşekkür
Ben en çok taşınabilir düşünüyorum yolu ['ftell()'] kullanmaktır (http://linux.die.net/man/3/ftell). Bu, muhtemelen sonuçta en iyi performansa sahip olmayan, sonuna kadar gitmek için dosyada aramanızı gerektirecektir. POSIX'te, dosya sistemini sormak için 'fstat()' ı kullanabilirsiniz. – unwind
@ user3419211 '\ n' karakteri dışında bir dosyada kayıtlı baytların tam sayısını istiyorsunuz. "\ N" dahil –
! Önerildiği gibi ftell() kullandım ve çalışıyor gibi görünüyor. – user3419211