Tag: 结构

将结构写入c中的文件

是否可以将整个结构写入文件 例: struct date { char day[80]; int month; int year; };

– >和之间的区别。 在一个结构?

如果我有一个类似的结构 struct account { int account_number; }; 然后做什么有什么区别 myAccount.account_number; 和 myAccount->account_number; 或者没有区别? 如果没有区别,你为什么不用它. 符号而不是-> ? ->看起来很乱。

有没有办法通过联合访问各个位?

我正在写一个C程序。 我想要一个我可以作为char访问的变量,但我也可以访问特定的位。 我以为我可以使用像这样的工会…… typedef union { unsigned char status; bit bits[8]; }DeviceStatus; 但是编译器不喜欢这个。 显然你不能在结构中使用位。 那我该怎么做呢?

制作结构的深层副本…制作结构的浅表副本

有这样的问题,但它们与我提出的具体问题不太相似。 我的问题是如何使用指针作为成员来创建结构的深层副本,以及如何使用指针作为成员来创建结构的SHALLOW副本。 然后,仅供参考,如何使用指针成员制作结构的深层副本以及如何使用指针成员制作结构的浅表副本(不确定最后一个是否有意义)。 假设我们有这个: typedef struct Student { char* first_name; char* last_name; int grade; long id; } Student; 这是我创建一个学生的通用函数(标题很难格式化): Student* create_student(const char* first_name, const char* last_name, int grade,long id) { Student *newStudentp = (malloc(sizeof(Student))); newStudentp -> last_name = (malloc((strlen(last_name) + 1) * sizeof(char))); newStudentp -> first_name = (malloc((strlen(first_name) + 1) * sizeof(char))); strncpy(newStudentp -> first_name, […]

如何在printf中查看结构的地址

我有一个函数返回地址如下 struct node *create_node(int data) { struct node *temp; temp = (struct node *)malloc(sizeof(struct node)); temp->data=data; temp->next=NULL; printf(“create node temp->data=%d\n”,temp->data); return temp; } struct node是哪里的 struct node { int data; struct node *next; }; 如何在printf(“”)中查看存储在temp中的地址? UPDATE 如果我检查gdb中的地址,则地址将以hex数格式显示,即0x602010,其中printf(“%p”,temp)相同地址的数字与我在gdb print命令中看到的数字不同。

如何初始化指向结构的指针数组?

是否可以初始化一个指向结构的指针数组? 就像是: struct country_t *countries[] = { {“United States of America”, “America”}, {“England”, “Europe”}, {“Ethiopia”, “Africa”} } 我想这样做是为了让实体在不连续的内存中,并在连续的内存中指向它们……但我不能使用动态内存,所以我想知道没有它是否可行。

取消引用结构指针内的指针

我有一个结构: struct mystruct { int* pointer; }; structure mystruct* struct_inst; 现在我想更改struct_inst->pointer的值。 我怎样才能做到这一点? 编辑 我没有写它,但pointer已经指向一个用malloc分配的内存区域。

使用2D动态分配的字符串创建动态分配的结构

我正在尝试用字母网格扫描。 cases是字母网格的数量, r , c是每个网格的行数和列数。 我想我可以用里面的2D数组创建一个结构数组。 我已经在这个工作了几个小时了,它仍然给我带来问题: 警告: 警告C4477 (第12行) – ‘scanf_s’:格式字符串’%s’需要类型为’char *’的参数,但可变参数1的类型为’int’ 警告C4473 (第12行) – ‘scanf_s’:没有为格式字符串传递足够的参数 错误: 编译器错误C2274 编译器错误C2461 代码: scanf_s(“%d”, &cases); struct grid { char **grid; }; struct grid *grids = (struct grid*)malloc(cases * sizeof(struct grid)); for (i = 0; i < cases; i++) { scanf_s("%d %d", &r, &c); grids[i].grid = (char**)malloc(sizeof(char*) * […]

为什么允许结构具有“指向其自身类型的指针”作为成员但不允许“(结构类型的数组)”本身?

当我尝试声明以下function时 typedef struct TRIE_NODE { char* word; struct TRIE_NODE node[26]; }TRIE_NODE; 我收到以下错误: ‘struct TRIE_NODE’的定义在结束’}’之前是不完整的 但是,如果我使用指向26个节点的指针声明此函数,它编译就好了。 typedef struct TRIE_NODE { char* word; struct TRIE_NODE* node[26]; }TRIE_NODE; 我想,因为这不是一个实例,所以我不可能得到指向这26个数组中第一个的指针,但如果这就是问题,那么TRIE_NODE* node[26]怎么也不是问题呢? 这个声明不等同于TRIE_NODE node[1][26]吗?

如何使用结构创建数据库表

我正在尝试使用c接口创建和存储数据库。 我有一个包含一些变量和数据类型的结构表。 我如何将它们转换为数据库表。 详情如下。 在,database.c文件中,我初始化了createTable函数和包含约束和数据类型的Folder_table结构,我有一个函数连接到firebird中的数据库。 一旦我读到这个结构,我想知道如何将这个结构转换成表并将其存储在数据库中。 (我可以用sprintf做些什么吗?) **database.c:** #include “/Library/Frameworks/Firebird.framework/Versions/A/Headers/ibase.h” #include #include void* CreateTable(char *tableName, uint rows) { int error = 0; void *table; //// Allocate table table = Allocate(GetTableSize(tableName)*rows); //// List table pointers for(uint rowNumber=0; rowNumber < rows; rowNumber++) { //// Add code to Connect linked list row pointers } return error; } typedef […]