一.1.声明了该结构体就声明了结构体内所有成员。
#include <stdio.h> typedef struct stuInfo { char *name; int age; int num; }Student; int main(int argc, const char * argv[]) { // insert code here... printf("Hello, World!\n"); Student s = { "Jobs",18,1}; // printf("请输入名字/年龄/学号\n");……Student s[3];//存有3个结构体的数组 // for (int i = 0; i < 3; i++) // { // scanf("%s%d%d",s[i].name,&s[i].age,&s[i].num); // } printf("%s--------%d----------%d\n",s.name,s.age,s.num); //指向某结构体的结构体指针。非指针的话,结构体变量点成员进行读写 Student *p; p = &s; p->age = 10;//等同(*p).age 右结合,->表示更清晰,意思就是指向一个结构体变量的指针 p->name = "bill"; p->num = 1; printf("%s--------%d----------%d\n",p->name,p->age,p->num); return 0; }
需求:1.创建2.输出3.查找4.增加5.删除
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <string.h> struct Stuinfo { char ID[4]; char NAME[10]; int Score; }; struct Stuinfo stuInfo[100];//结构体数组 FILE *file;//文件指针,指向物理文件 bool checkId(char Id[]); bool checkId(char Id[]) { bool s = false; for (int i = 0; i < strlen(Id); i++) { if (Id[i] >= '0' && Id[i] <= '9') { s = true; } else { s = false; break; // } } return s; } bool checkName(char name[]); bool checkName(char name[]) { bool s = false; for (int i = 0; i < strlen(name); i++) { if ((name[i] >= 'a' && name[i] <= 'z') || (name[i] >= 'A' && name[i] <= 'Z')) { s = true; } else { s = false; break; // } } return s; } void createDB(); void createDB() { int i = 0;//代表先在录入第i个学生 int m = 0;//录入了多少学生 bool success = 0; while (1) { //学号 printf("请输入第%d个学生的信息\n",i+1); do { printf("请输入学号\n"); char tempId[4]; scanf("%s",tempId); if (checkId(tempId)) { success = 1; strcpy(stuInfo[i].ID, tempId); } else { success = 0; printf("输入的学号有错误\n"); } } while (!success); //姓名 do { printf("请输入姓名\n"); char tempName[10]; scanf("