有没有办法在编译时将整个文本文件作为字符串包含在C程序中?
就像是:
file.txt的:
This is
a little
text file
Run Code Online (Sandbox Code Playgroud)main.c中:
#include <stdio.h>
int main(void) {
#blackmagicinclude("file.txt", content)
/*
equiv: char[] content = "This is\na little\ntext file";
*/
printf("%s", content);
}
Run Code Online (Sandbox Code Playgroud)获取一个在stdout上打印的小程序"这是一个小文本文件"
目前我使用了一个hackish python脚本,但它只是丑陋而且仅限于一个变量名,你能告诉我另一种方法吗?
可能的重复:
将文本文件读入 c 中的数组
我正在尝试将文件读入动态数组。首先我使用 open() 打开文件,所以我得到文件描述符但是我不知道如何使用 malloc 将内存分配给动态数组,以便从内存中对文件进行一些数据修改。
我需要将文本文件的内容复制到动态分配的字符数组中.
我的问题是获取文件内容的大小; 谷歌揭示我需要使用fseek和ftell,但为此文件显然需要以二进制模式打开,这只会给垃圾.
编辑:我尝试在文本模式下打开,但我得到奇怪的数字.这是代码(为了清楚起见,我省略了简单的错误检查):
long f_size;
char* code;
size_t code_s, result;
FILE* fp = fopen(argv[0], "r");
fseek(fp, 0, SEEK_END);
f_size = ftell(fp); /* This returns 29696, but file is 85 bytes */
fseek(fp, 0, SEEK_SET);
code_s = sizeof(char) * f_size;
code = malloc(code_s);
result = fread(code, 1, f_size, fp); /* This returns 1045, it should be the same as f_size */
Run Code Online (Sandbox Code Playgroud)