Tag: 文件

如何解压缩msgpack文件?

我正在将msgpack编码的数据写入文件。 在写作时,我只是使用C API的fbuffer。 如(我为示例划分了所有error handling): FILE *fp = fopen(filename, “ab”); msgpack_packer pk; msgpack_packer_init(pk, fp, msgpack_fbuffer_write); msgpack_pack_int(pk, 42); // more data … 我该如何阅读此文件? 我发现的所有示例都假设数据在内存中,但是,我的文件高达5GB,将它完全保存在内存中并不是一个好主意。 我也不想自己阅读。 毕竟,我不知道msgpack对象有多长,所以很有可能我的缓冲区中有半个整数。 msgpack的unpack可以直接从磁盘读取吗? 或者是否有一些标准模式来做到这一点?

如何附加到文本文件?

我有一个用C ++编写的程序,它接受来自用户的文本并使用文件句柄将其保存到文本文件中。 以下是该计划的片段: 该程序工作正常。 唯一的问题是它不会将文本追加到文本文件中。 相反,它“删除”所有现有文本并仅保存新文本。 也就是说,丢弃在程序的先前会话中保存的文本,而是保存新文本。 我该怎么解决这个问题呢?

将文本文件中的单词插入到C中的树中

在过去的两天里,我遇到了一个奇怪的问题,但我还是无法解决它。 我试图从2个文本文件中获取单词并将这些单词添加到树中。 我选择获取单词的方法在这里被引用: 将文本文件拆分为C中的单词 。 我用来将单词插入树中的函数如下: void InsertWord(typosWords Words, char * w) { int error ; DataType x ; x.word = w ; printf(” Trying to insert word : %s \n”,x.word ); Tree_Insert(&(Words->WordsRoot),x, &error) ; if (error) { printf(“Error Occured \n”); } } 正如发布的链接中所提到的,当我尝试将文本文件中的单词导入树中时,我收到“Error Occured”。 再次function: 文本文件: 一个 AAAH aaahh char this_word[15]; while (fscanf(wordlist, “%14s”, […]

断言宏中的C / C ++完整文件路径

我想知道是否可以使用断言宏显示完整的文件路径? 我无法在编译命令中指定完整文件路径,还有办法吗? 我的调试环境是linux / g ++

在C中写入位图文件头的问题

我正在尝试使用C创建一个新的位图文件。这是.bmp文件头的结构。 #define uint16 unsigned short #define uint32 unsigned long #define uint8 unsigned char typedef struct { uint16 magic; //specifies the file type “BM” 0x424d uint32 bfSize; //specifies the size in bytes of the bitmap file uint16 bfReserved1; //reserved; must be 0 uint16 bfReserved2; //reserved; must be 0 uint32 bOffBits; } BITMAPFILEHEADER; 在我的计划中,我这样做。 main() { FILE* […]

指向另一个结构的指针,从文件中写入和读取它会产生SegFault

我正在从学习C The Hard Way中刷出我的C技能,目前我正在进行第17次练习 。 我正在做“额外积分”部分。 使该页面上给出的数据库代码得到我正在尝试 “更改代码以接受MAX_DATA和MAX_ROWS的参数,将它们存储在Database结构中,并将其写入文件,从而创建一个可以任意resize的数据库” 所以,我注释掉#define指令,并更改了给定的地址和数据库结构: struct Address { int id; int set; char *name; char *email; }; struct Database { int MAX_DATA; int MAX_ROWS; struct Address *rows; }; 这样,我可以从用户那里获得MAX_DATA和MAX_ROWS参数,以根据自己的喜好创建数据库。 我在代码中更改的其他内容是 – Database_create函数: void Database_create(struct Connection *conn, int MAX_DATA, int MAX_ROWS) { int i = 0; conn->db->MAX_DATA = MAX_DATA; conn->db->MAX_ROWS = MAX_ROWS; […]

Realloc和sscanf成为一个函数

我有一个有num行的文件:每行包含一个数字。 我想将每个数字保存到矢量*vet 。 为什么这段代码不起作用? Segmentation fault (core dumped) 我认为错误是save_numbers函数中的sscanf ,但我不知道为什么。 #include #include /* This function allocate memory and save numbers into a vector */ int save_numbers (int **vet, int *num) { FILE *fin; int i = 0; char buff[10]; if ( !(fin = fopen(“numbers.dat”, “r”)) ) return 1; while ( fgets(buff, sizeof(buff), fin) ) { […]

将格式化文件读入C中的char数组

我有一个非常简单的问题。 我需要将文件的内容读入C中的char数组。文件将始终格式化为两列字母,例如: AB BC EX CD 每个字母代表图形上的一个顶点,我将在稍后处理。 我已经学会了使用C ++和Java编程,但我并不特别熟悉C语言。 引起我无法弄清楚的问题的是文件多行多长的事实。 我需要每个字母占据数组中的一个插槽,所以在这种情况下它是: array[0] = ‘A’, array[1] = ‘B’, array[2] = ‘B’, array[3] = ‘C’等等。 最终我需要数组不包含重复项,但我可以稍后处理。 我在本学期早些时候编写了一个程序,它从一个文件中读取一行内容并且工作正常,因此我复制了大部分代码,但在这种情况下它不起作用。 这是我到目前为止所拥有的: #include #include int main (int argc, char *argv[]) { int i; int count = 0; char * vertexArray; char ch = ‘\0’; // open file FILE *file = fopen( […]

fgets()是否会移动文件指针?

fgets()函数是否自动将文件指针移动到位置,直到我提到的大小参数为止? 例如 : p.txt文件的内容是“我是个好孩子”。 使用fgets(a,5,fp1)后文件指针向前移动5个位置? 在任何一本书中都找不到这个。 因此查询。

检查字符串中是否存在所有char值

我正在做这个任务,我被困住了。 目标是读取文件并查找文件中String中是否存在这些char值。 我必须将文件中的String与作为参数放入的另一个String进行比较。 但是,只要每个char值都在文件的String中,那么它就“匹配”。 示例(输入和输出): ./a.out file1完成 完成是在笨蛋 完成不是在小狗 示例(file1): 梼 狗 正如您所看到的那样,比较字符串无关紧要,文件每行也跟着一个单词。 我把一个程序放在一起,查找char值是否存在于另一个String中,但这只是问题的一部分。 知道如何去做吗? #define _GNU_SOURCE #include #include #include int main(int argc, char **argv){ FILE *f = fopen(argv[1], “r”); char *line = NULL; size_t len = 0; ssize_t read; char *word = argv[2]; if(argc != 3){ printf(“./a.out \n”); exit(EXIT_SUCCESS); } if(f == NULL){ printf(“file […]