结构体数组操作+文件读写

本文介绍了如何在C语言中声明和使用结构体数组,包括创建、输出、查找、增加和删除元素的操作,并探讨了结合文件读写进行数据持久化的实现方法。
摘要由CSDN通过智能技术生成

一.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("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值