#include
指令只是在C編譯器將其轉換爲可執行文件之前,將其他文件的內容複製到源代碼中。換句話說,這是一次性的過程,其他文件「烘焙」到您的代碼中。
如果您需要每次程序運行時「動態」重新加載文件的內容,您需要使用C代碼自行加載它。這裏有一個例子,從我自己的一個項目拉動:
/*
[PUBLIC] Load the contents of a file into a malloc()'d buffer.
*/
unsigned char *txtLoadFile(const char *file_name, long *length)
{
FILE *fsrc = NULL;
unsigned char *data = NULL;
long size = 0;
/* Attempt to open the requested file. */
fsrc = fopen(file_name, "rb");
if (!fsrc) { return NULL; }
/* Get the length of the file in bytes. */
fseek(fsrc, 0, SEEK_END);
size = (long)ftell(fsrc);
rewind(fsrc);
/* Copy the data into memory (with an extra zero byte, in case it's text). */
data = (unsigned char*)malloc(size + 1);
if (data)
{
memset(data, 0, size + 1);
fread(data, 1, size, fsrc);
}
fclose(fsrc);
/* Return the result. */
if (length) { *length = size; }
return data;
}
此代碼應該是基本上不言自明的,但也有值得指出的幾件事情:該文件正在被打開
rb
(讀取二進制)模式 - 您可能需要使用r
(讀取文本),具體取決於您在做什麼。如果是這樣,你可能會想要使用普通的char*
而不是unsigned char *
來存儲數據,就像我在這裏所做的那樣。
- 爲字符串的零NULL結束符分配了一個額外的字節。
- 緩衝區正被存儲在動態分配的內存中。由於您似乎更熟悉Python或Ruby等動態語言,因此我應該提醒您,一旦完成了分配的內存,您將需要分配內存。
難道你只是寫一個程序,打開並讀取文本文件?這裏的問題究竟是什麼? – 2014-11-01 23:31:46
問題是因爲我說我根本不知道任何C,我只需要以動態的方式包含這個文件。如果你能舉出一個很棒的例子。 – Ripwinder 2014-11-01 23:40:33
給出一個* what *的例子,確切地說?不幸的是,我真的不知道你想在這裏實現什麼。您是否嘗試在線搜索C編程教程? [這是我在10秒左右發現的一個。](http://www.cprogramming.com/tutorial/cfileio.html) – 2014-11-01 23:52:38