⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.c

📁 一个关于结构体数据的文件读写操作实例. linux/c
💻 C
字号:
/*  gcc -o student student.c -lcurses  */

#include <stdio.h>
#include <curses.h>
#define SIZE 5

struct student_type{
	char name[10];
	int num;
	int age;
	char addr[15];
}stud[SIZE];

int save()
{
	FILE * fp;
	int i;
	long des;
	if((fp=fopen("stu_list","ab"))==NULL)
	{
		printf("cannot open file.\n");
		return;
	}
	for(i=0;i<SIZE;i++)
	{
		scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
		if(fprintf(fp,"%s %d %d %s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr)==EOF)
		{
			printf("file write error.\n");
		}
	}
	fclose(fp);
	return 0;
}

int readfile()
{
        FILE * fp;
        int i;
        long des;
        if((fp=fopen("stu_list","ab+"))==NULL)
        {
                printf("cannot open file.\n");
                return;
        }
	i = 0;
        while(1)
        {
                printf("i= %d\n",i);
                if((fscanf(fp,"%s %d %d %s\n",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr)==EOF))
                {
                        break;
                }
                i++;
        }
        fclose(fp);
	i--;
        for(;i>=0;i--)
        {
                printf("%s\t%d\t%d\t%s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
        }
        return 0;
}

int seekfile()
{
        FILE * fp,*fp2;
        int i;
        long des;
        if((fp=fopen("stu_list","ab+"))==NULL)
        {
                printf("cannot open file(stu_list).\n");
                return;
        }
	if((fp2=fopen("stu_list_new","ab"))==NULL)
        {
                printf("cannot open file(stu_list_new).\n");
                return;
        }
        i = 0;
        while(1)
        {
                if((fscanf(fp,"%s %d %d %s\n",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr)==EOF))
                {
                        break;
                }
		if(stud[i].num == 2)
                {
                        stud[i].age=222;
		}
		printf("%s\t%d\t%d\t%s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);		
                if(fprintf(fp2,"%s %d %d %s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr)==EOF)
			printf("file write error(stu_list_new).\n");
                i++;
        }
	fclose(fp2);
        fclose(fp);
        return 0;
}



int main()
{
	int i;
	for(i=0;i<SIZE;i++)
		scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
	save();
	seekfile();
	readfile();
	getch();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -