printf("%s\n",worker->name); //____错误5____
时间: 2024-03-05 12:53:57 浏览: 68
在这段代码中,`worker`是一个指向`struct worker`类型的指针,而在使用其中的成员时需要使用箭头符号`->`,而不是点号`.`。
因此,修改后的代码如下:
```c
#include <stdio.h>
#include <string.h>
struct worker{
char name[20];
int age;
char sex;
int id;
} w;
int main(){
struct worker *worker_ptr = &w;
strcpy(worker_ptr->name, "liming");
worker_ptr->age = 21;
worker_ptr->sex = 'M';
worker_ptr->id = 1;
printf("%s\n", worker_ptr->name);
return 0;
}
```
在这个示例中,我们定义了一个指向`w`的指针`worker_ptr`,然后使用箭头符号访问`worker_ptr`指向的结构体中的成员。最后使用`printf`函数输出`name`成员的值。
相关问题
//修改员工信息函数 int change(Node *worker) { Node *p; char find[20]; p = worker->next; if (p == NULL) { printf("\n提示:没有资料可以修改!\n"); return 0; } printf("请输入要修改的员工号"); scanf("%s", find); while (p != NULL) { if (strcmp(p->data.jobNo, find) == 0) { break; } p = p->next; } if (p!=NULL) { int x; while (1) { printf("完成修改请输入0,否则输入非0数字进行修改!"); scanf("%d", &x); if (x == 0) { break; } printf(" 请输入新员工号: "); scanf("%s", p->data.jobNo); printf(" 请输入新员工姓名: "); scanf("%s", p->data.name); printf(" 请输入新员工性别: "); scanf("%s", p->data.sex); printf(" 请输入新员工出生年月: "); scanf("%s", p->data.birthday); printf(" 请输入新员工职务: "); scanf("%s", p->data.position); printf(" 请输入新员工工资: "); scanf("%s", p->data.salary); printf(" \n提示:该职工资料已经修改!\n "); } } else printf("\n提示:没有你要修改的资料!\n "); }
这段代码是一个修改员工信息的函数,它首先检查链表中是否有员工信息,如果没有则提示没有资料可以修改,如果有,则要求输入要修改的员工号。然后遍历链表,查找该员工号对应的节点,如果找到了,则进入一个循环,要求输入要修改的信息,直到输入0为止,输入的非0数字将被认为是要修改的信息。如果输入的0,则退出循环,提示该职工资料已经修改。如果没有找到对应的员工号,则提示没有你要修改的资料。
struct workers { char jobNo[15]; //员工号 char name[15]; //姓名 char sex[15]; //性别 char birthday[15]; //出生年月 char degree[15]; //学历 char position[15]; //职务 char salary[15]; //工资 char addr[15]; //住址 char tel[15]; //电话 }; //类型定义语句 typedef struct node { struct workers data; struct node *next; }Node; //添加信息函数 "尾插法建表" void Add(Node *worker) { Node *p, *q; char n[10]; q = worker; while (q->next != NULL) { q = q->next; } while (1) { printf("提示:输入0返回主菜单!\n"); printf("请输入员工号:"); scanf("%s", n); if (strcmp(n, "0") == 0) { break; } p = (Node *)malloc(sizeof(Node)); strcpy(p->data.jobNo, n); printf("请输入姓名:"); scanf("%s", p->data.name); printf("请输入性别:"); scanf("%s", p->data.sex); printf("请输入出生年月:"); scanf("%s", p->data.birthday); printf("请输入学历:"); scanf("%s", p->data.degree); printf("请输入职务:"); scanf("%s", p->data.position); printf("请输入工资:"); scanf("%s", p->data.salary); printf("请输入住址:"); scanf("%s", p->data.addr); printf("请输入电话:"); scanf("%s", p->data.tel); printf("提示:已经完成一条记录的添加!"); p->next = NULL; q->next = p; q = p; } }对每一句进行解释
这段代码是定义了一个结构体 `workers`,其中包含了员工的基本信息,如员工号、姓名、性别、出生年月、学历、职务、工资、住址、电话。接着定义了一个链表结构体 `node`,包含了 `workers` 结构体以及指向下一个节点的指针。然后定义了一个 `Add()` 函数,用于向链表中添加员工信息。该函数使用尾插法建立链表,并通过循环读取用户的输入信息,将其添加到链表中。如果用户输入了 "0",则跳出循环,返回主菜单。最后,该函数将新添加的节点接到链表的最后一个节点之后。
阅读全文