Tag: struct

如何使用htonl将little endian转换为big endian

我有以下元素的结构。 此外,结构是完美填充。 typedef struct { uint16_t a; uint16_t b; uint8_t c; uint8_t d; uint8_t e[6]; } ad; 这个结构是一个小端。 我的意思是当我在我的大端机器上打印这个结构时,我得到以下内容 如果c = 1,则d = 2,e [0] = 3,e [1] = 4。 我明白了 c = 4,d = 3,e [0] = 2且e [1] = 1。 a和b被交换。 此外,e [1]与c交换,e [0]与d交换。 我正在使用如下的htonl函数。 但是,它不起作用,任何人都可以建议我一个很好的答案。

按字母顺序对链表进行排序

我想问你,如果可以简单地按字母顺序对名字进行排序? 我认为这是可能的,但我不知道如何。 你能帮帮我吗? 我将非常感激。 “我”按下应该扫描新名称并将此名称添加到链表,然后按字母顺序对此列表进行排序“d”按下应显示整个排序列表 “k”按下程序结束 我用结构数组做了这个,它工作得很好,但我不知道如何对链表做同样的事情…… 非常感谢你 :) 这是代码: #include #include #include typedef struct list{ char name[100]; struct list *next; }LIST; int main() { int i, n, k = 0, v = 0, m = 0, j = 0; char str[100], c; LIST *p_first = NULL, *p_act = NULL, *p_prev = NULL; while((c=getchar())!=’k’) { […]

将Struct复制到函数C中的指针数组

我在C中分配内存有一个很大的问题 我有这个结构 typedef struct{ int x; int y; }T; 我想创建一个动态添加结构到指针的函数。 就像是: int main() { T* t; f(&t); free(t); } 到目前为止,我认为一切都很好,现在function是我迷路的地方 void f(T** t) { T t1; T t2; T t3; //first i malloc *t=malloc(sizeof(T)*T_MAX_SIZE);//i want another function to make the array bigger, but this is not as important as the problem t1.x=11; t1.y=12; t2.x=21; t2.y=22; […]

如何为struct本身及其成员分配内存

我有这个结构: struct foo { char *a; char *b; char *c; char *d; }; 它可能为struct本身及其成员分配空间而不是例如, struct foo f; fa = malloc(); fb = malloc(); fc = malloc(); fd = malloc(); strcpy(fa, “a”); strcpy(fb, “b”); //.. 像这样的东西(它不起作用): struct foo f = malloc(sizeof(struct f)); strpcy(fa, “a”); //etc

在Struct内部的指向Struct的Free()指针

我似乎无法找到如何free()子结构。 结构: typedef struct { char ID[5]; location *loc; } observer; typedef struct { double lat; double lng; } location; 我的Free()Wrapper是: void free_obs_list_node(void *data) { free(*(observer **)data); } 我可以释放观察者结构。 我无法释放指向结构位置的指针。 这是我的问题:如何释放location *loc;指向的location结构location *loc; 我使用了free()的包装器,因为这些是通用链表中的节点。

强制结构中枚举字段的大小

[注意:这与指定C中枚举类型 的大小和C中枚举的大小有关? ,但在这些问题中,问题是如何最小化封闭结构的大小。 在这里,我们要指定结构的各个成员的大小,但仍然获得typedef’d enums的文档优势] 我正在实现串行通信协议的客户端。 我想使用C结构来捕获串行数据包的格式,我想使用C枚举来定义数据包中各种插槽的合法值。 我没有办法做到这两点,但由于我使用GCC,它可能是可能的。 作为问题的假设示例,假设我收到的数据包如下所示: typedef struct { uint16_t appliance_type; uint8_t voltage; uint16_t crc; } __attribute__((__packed__)) appliance_t; 这很清楚,我很确定我会得到一个长度为五个字节的结构。 但它没有捕获appliance_type和voltage只能采用某些值的事实。 我更喜欢这样的东西…… typedef enum { kRefrigerator = 600, kToaster = 700, kBlender = 800 } appliance_type_t; typedef enum { k120vac = 0, k240vac = 1, k12vdc = 2 } voltage_t; typedef struct { […]

检查c中的链表中是否已存在元素

假设我有一个存储book结构和下一个节点指针的链表: struct book { unsigned short size_of_content; unsigned short price; unsigned char *content; }; struct list { struct book p; struct list *next; }; 当我构建链表时,我会检查新书的价格是否与其中一本已链接的书的价格相同。 基本上确保没有重复的价格。 我有一个构建价格数组的想法,并将新价格与现有价格进行比较。 但是,由于C不支持无限大小的数组,我不认为我的方式是个好主意。 我该怎么办? 谢谢

将变量从全局变为本地 – C

我为一个项目编写了以下代码,但它没有通过单一测试,要求两个变量不是全局的,而是在main()本地。 修改structexample1.c ,使变量student和anotherStudent不是全局变量,而是main的本地变量。 我模糊地理解了本地和全球的概念,但我不确定如何在我编写的代码中实现问题。 #include #include struct student_s { char* name; int age; double height; struct student_s* next; } student; struct student_s anotherStudent; void printOneStudent(struct student_s student) { printf(“%s (%d) %s %s %.2lf %s\n”, student.name, student.age, “,”, “height”, student.height, ” m”); } void printStudents(const struct student_s* student) { while (student != NULL) { printOneStudent(*student); student […]

struct array中的strstr char数组

我有一个结构定义为; struct player { int no, age; char name[20]; } players[10]; 数组从文件中填充。 我尝试做的是,从用户获取输入,将输入添加到char数组,将其发送到循环中的search(char lookup [])函数和strstr name字段。 EDİT:对不起,我更正了订单。 我正试图在一个循环中strstr。 char *p = strstr(players[x].name, inputFromUser); 但是p总是为空。 我怎样才能做到这一点? 提前致谢。 编辑 – 代码添加… #include #include #include #include struct player { int no, age; char name[20]; } players[20]; void fillstruct(char *); void search(char []); int main(int argc, char *argv[]) { […]

Arduino:无法通过gcc编译器将union struct作为指针交流传递

我正在尝试使用Arduino结构但不能通过函数调用传递结构指针。 添加主要function并使用gcc为我的计算机编译时,一切正常,但使用Arduino IDE,我得到错误。 我试过的代码是: typedef union { struct { unsigned unit :2; unsigned channel:2; unsigned status :1; unsigned group :1; unsigned remote :26; }; unsigned long data; } Signal; Signal signal; void testPassingStruct(Signal *variable) { variable->status = 1; } void setup() { signal.status = 1; testPassingStruct(&signal); } void loop() { } 错误是: structtest:2: error: variable […]