精华内容
下载资源
问答
  • #include struct Student{ int num; char name[20]; int age; int score; }; int main(int argc,const char *argv[]) { struct Student stus[2];  int i;...//输入学生信息  for(i=0;i
    #include <stdio.h>
    struct Student{
    int  num;
    char name[20];
    int  age;
    int  score;

    };
    int main(int argc,const char *argv[])
    {
    struct Student stus[2];
        int i;
    FILE *fp;
    //输入学生信息
        for(i=0;i<2;i++)
    {
     printf("请输入第%d个学生的信息:\n",i+1);
     scanf("%d %s %d %d",&stus[i].num,stus[i].name,&stus[i].age,&stus[i].score);
    }
        //保存到文件
        fp=fopen("D:/xuesheng.txt","w");
        for(i=0;i<2;i++)
    {
     fprintf(fp,"%d %s %d %d\n",
     stus[i].num,stus[i].name,stus[i].age,stus[i].score);
    }
         fclose(fp);
    //读取文件
    fp=fopen("D:/xuesheng.txt","r");
          if(fp==0)
     {
     printf("文件打开失败!\n");
     return 0;
     }
     for(i=0;i<2;i++)
     {
      fscanf(fp,"%d %s %d %d",
     &stus[i].num,stus[i].name,&stus[i].age,&stus[i].score);
     }
     //输出文件信息
     for(i=0;i<2;i++)
    {
     printf("学号:%d 姓名:%s 年龄:%d 成绩:%d\n",
     stus[i].num,stus[i].name,stus[i].age,stus[i].score);
    }
     fclose(fp);
    return 0;
    }
    展开全文
  • c语言文件的输入输出C语言文件的输入与输出一. 文件指针??每个被使用的文件都在内存中开辟一个区,用来存放文的有关信息(如文件的名字、文什状态及文件当前位置等)。这些信息保存在一个结构体变量中的。该结构体...

    c语言文件的输入输出

    C语言文件的输入与输出

    一. 文件指针

    ??每个被使用的文件都在内存中开辟一个区,用来存放文的有关信息(如文件的名字、文什状态及文件当前位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。在sudio.h文件中有以下的文类型声明:typedef struct{hort level; ??/*缓冲区“满”或“空”的程度*/???????unsignedflags; /*文件状态标志*/???????char fd; ???????/*文件描述符*/???????unsigned char hold;?? /*如无缓冲区不读取字符*/???????short bsize; ???????/*缓冲区的大小*/???????unsigned char *buffer;/*数据缓冲区的位置*/???????unsignedar *curp; ???/*指针,当前的指向*/???????unsigned istemp; ????/*临时文件,指示器*/???????short token;??????? /*用于有效性检查*}FILE; ???在缓冲文件系统中,每个被使用的文件都要在内存中开辟一FILE类型的区,存放文件的有关信息。??? FILE类型的数组FILE f[5];定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。FILE *fp;“text.exe”, “rb”);

    ch=getc(fp);

    第一行语句只定义了一个没有指向的文件指针fp,第二行是打开文件text.exe,并同时确定对访问文件的操作方式(此处对访问的文件只进行读操作),这时给文件结构中的成员信息赋值,并使fp指向text.exe文件,第三行是利用文件指针对文件进行操作,操作方式应当与打开文件时确定的方式一致(只读)。由此可以看出,操作文件过程中不出现对文件结构成员的访问语句。? 如果有n个文件,一般应设n个指针变量,使它们分别指向n个文件,

    二.文件的打开与关闭

    文件的打开(fopen函数)①需要打开的文件名,也就是准备访问的文件的名字;??? ②使用文件的方式(“读”还是“写”等);??? ③让哪一个指针变量指向被打开的文件。

    fopen(文件名”使用文件方式”);??? FILE=fopen(“文件名”使用文件方式”);

    例:fp=fopen(“”, “r”);

    它表示,要打开的文件名为file,操作方式为读入,fopen函数返回指向file文件的指针并赋值给指针变量fp,这样fp和文件file就建立了联系。文件名字符串允许带有路径,使用路径时,路径分隔符是“\” 而不是“\\”。

    例如:FILE *fp,*fq;

    fp=fopen(“student”,“w”);

    fq=fopen(“D:liuli\student34”,“r”);

    以上语句表明,在当前磁盘,当前目录下以只写方式打开一个新文件,并将该文件的内存存储的首地址赋予文件指针fp,再以只读方式打开D盘liuli子目录下名字为student34的已经存盘的旧文件,并将该文件的内存存储的首地址赋予文件指针fq。

    注意:如果fopen函数调用失败,即文件打开失败,fopen函数将返回空指针NULL,NULL在头文件中被定义为0.

    文件使用方式含义含义打开文件方式“r”打开一个文本文件只读“w”打开一个文本文件只写“a”向文本文件尾增加数据追加“rb”打开一个二进制文件只读“wb”打开一个二进制文件只写ab”打开一个二进制文件,向二进制文件尾增加数据追加“r”打开一个文本文件读写w+”建立一个新的文本文件读写“a+”打开一个文本文件读写rb++”打开一个二进制文件读写 “wb+”建立一个新的二进制文件读写 “ab+”打开一个二进制文件读写说明:??? (1)用“r”方式打开文件,而且该文件应该已经存在,不能用“r”方式打开一个并不存在的文件;否则出错。??? (2)用“w”方式打开的文件只能用于向该文件写数据(即输出文件),而不能用来向计算机输入。如果原来不存在该文件,则在打开时新建立一个以指定的名字命名的文件。如果原来已存在一个以该文件名命名的文件,则在打开时将该文件删去,然后重新建立个新文件。??? (3)如果希望向文件末尾添加新的数据(不希望删除原有数据),则应该用“a”方式打开。但此时该文件必须已存在;否则将得到出错信息。打开时,位置指针移到文件末尾。??? (4)用"r”、“w+”、“a+”方式打开的文件既可以用来输人数据,也可以用来输出数据。用"r”方式时该文件应该已经

    展开全文
  • 而且之前版本的信息每次退出程序后不会保存,每次需要重新录入,加入文件操作后可以将录入的信息保存文件中,然后再从文件中读取就可以了。现在就让我们来完成一下之前程序的升级版。实现一个简单的通讯录要求: ...

      之前写的静态版的通讯录,只能存储固定数目大小的联系人信息,现在要升级为动态版的,这样只要容量不够的话只需自动扩容就可以啦!而且之前版本的信息每次退出程序后不会保存,每次需要重新录入,加入文件操作后可以将录入的信息保存到文件中,然后再从文件中读取就可以了。现在就让我们来完成一下之前程序的升级版。

    实现一个简单的通讯录

    要求: 
    通讯录可以用来存储1000个人的信息,每个人的信息包括: 
    姓名、性别、年龄、电话、住址 
    该通讯录所具备的基本功能: 

    1. 添加联系人信息 

    2. 删除指定联系人信息 

    3. 查找指定联系人信息 

    4. 修改指定联系人信息 

    5. 显示所有联系人信息 

    6. 清空所有联系人 

    7. 以名字排序所有联系人

    8.可以将信息保存到文件中,每次从文件中读取信息 

    9.可以实现扩容,实现动态存储

    #ifndef _CONTACT_H__
    #define _CONTACT_H__
    #include<stdio.h>
    #include<stdlib.h>
    #include<assert.h>
    #include<string.h>
    #define MAX_NAME 20
    #define MAX_SEX 5
    #define MAX_TEL 11
    #define MAX 10
    #define ADD_CAPACITY 10
    #define MAX_ADDR 100
    #define FILE_NAME "contact.txt"
    enum OPERATIONS//通讯录的所有功能选项
    {
    	EXIT,
    	ADD,
    	DEL,
    	MODIFY,
    	SORT,
    	SEARCH,
    	SHOW,
    	CLEAR
    };
    enum MODIFYINFORMATION//修改联系人信息的选项
    {
    	EXITMODIFY,
    	NAME,
    	AGE,
    	TEL,
    	SEX,
    	ADDR
    };
    typedef struct Person_Information
    {
    	char name[MAX_NAME];
    	int age;
    	int tel[MAX_TEL];
    	char sex[MAX_SEX];
    	char addr[MAX_ADDR];
    	int flag;
    
    }PerInfor;//存放联系人信息的一个结构体类型
    typedef struct Contact
    {
    	PerInfor* data;
    	int count;
    	int capacity;
    }Contact, *pContact;//count表示联系人的个数,data是一个PerInfor类型的数组用来存放联系人信息
    
    void InitContact(pContact p);//对count和data[]进行初始化
    
    int findperson(pContact p);//查找指定的联系人,并返回下标
    
    void ADDContact(pContact p);//	添加联系人信息 
    
    void DELContact(pContact p);//删除指定联系人信息 
    
    void MODIFYMenu();//修改联系人信息的选择菜单
    
    void MODIFYContact(pContact p);//修改指定联系人信息
    
    void SORTContact(pContact p);//根据名字将联系人排序;
    
    void SEARCHContact(pContact p);//查找指定联系人信息 
    
    void ShowContact(pContact p);//	显示所有联系人信息 
    
    void CLEARContact(pContact p);//清空所有联系人
    
    void DestoryContact(pContact p);//销毁动态开辟的空间
    
    void SaveContact(pContact p);//保存内存信息到文件
    
    void LoadContact(pContact p);//从文件中加载信息到内存
    #endif //_CONTACT_H__

    #include "Contact.h"
    
     void check_capacity(pContact p)//增容
    {
    	if (p->count == p->capacity)
    	{
    		PerInfor* pc = (PerInfor*)realloc(p->data, (p->capacity + ADD_CAPACITY)*sizeof(PerInfor));
    		if (pc == NULL)
    		{
    			printf("增容失败\n");
    		}
    		else
    		{
    			p->data = pc;
    			pc = NULL;
    		}
    		p->capacity += ADD_CAPACITY;
    		printf("增容成功\n");
    	}
    }
    void LoadContact(pContact p)//从文件中读取信息
    {
    	PerInfor tmp = { 0 };
    	FILE *pf = fopen(FILE_NAME, "r");
    	if (pf == NULL)
    	{
    		perror("open file for read");
    		exit(EXIT_FAILURE);
    	}
    	while (fread(&tmp, sizeof(PerInfor), 1, pf))
    	{
    		//扩容
    		check_capacity(p);
    		p->data[p->count] = tmp;
    		p->count++;	
    	}
    	fclose(pf);
    	pf = NULL;
    }
    void InitContact(pContact p)
    {
    	p->count = 0;
    	p->capacity = MAX;
    	p->data = (PerInfor*)calloc(sizeof(PerInfor),p->capacity);
    	p->data->flag = 1;
    	LoadContact(p);//加载文件的信息到内存中
    }
    int findperson(pContact p)
    {
    	int i = 0;
    	char personname[MAX_NAME];
    	printf("请输入要查找的联系人的姓名\n");
    	scanf("%s", personname);
    	for (i = 0; i < p->count; i++)
    	{
    		if (strcmp(personname, p->data[i].name) == 0)
    		{
    			return i;
    		}
    	}
    	return -1;
    }
    
    void ADDContact(pContact p)
    {
    	    check_capacity(p);
    		printf("请输入姓名\n");
    		scanf("%s", p->data[p->count].name);
    		printf("请输入年龄\n");
    		scanf("%d", &(p->data[p->count].age));
    		printf("请输入联系方式\n");
    		scanf("%s", p->data[p->count].tel);
    		printf("请输入性别\n");
    		scanf("%s", p->data[p->count].sex);
    		printf("请输入家庭住址\n");
    		scanf("%s", p->data[p->count].addr);
    	    p->count++;
    	    printf("添加联系人成功\n");
    		
    }
    void DELContact(pContact p)
    {
    
    	int i = 0;
    	if (p->count == 0)
    	{
    		printf("通讯录为空\n");
    		return;
    	}
    	else
    	{
    		int ret = findperson(p);
    		if (ret == -1)
    		{
    			printf("无该联系人\n");
    			return;
    		}
    		else
    		{
    			p->data->flag = 0;
    			p->count--;
    		}
    		printf("删除联系人成功\n");
    	}
    }
    void MODIFYMenu()
    {
    	printf("*******************************\n");
    	printf("********1.name****2.age********\n");
    	printf("********3.tel ****4.sex********\n");
    	printf("*************5.addr************\n");
    	printf("**********0.exitmodify*********\n");
    	printf("*******************************\n");
    }
    void MODIFYContact(pContact p)
    {
    	int ret = findperson(p);
    	if (ret == -1)
    	{
    		printf("无该联系人,请检查输入信息\n");
    		return;
    	}
    	else
    	{
    		int input = 0;
    		MODIFYMenu();
    		printf("请选择要修改的信息\n");
    		scanf("%d", &input);
    		switch (input)
    		{
    		case NAME:
    			printf("请输入修改后的名字\n");
    			scanf("%s", p->data[ret].name);
    			break;
    		case AGE:
    			printf("请输入修改后的年龄\n");
    			scanf("%d", &(p->data[ret].age));
    			break;
    		case TEL:
    			printf("请输入修改后的联系方式\n");
    			scanf("%S", p->data[ret].tel);
    			break;
    		case SEX:
    			printf("请输入修改后的性别\n");
    			scanf("%s", p->data[ret].sex);
    			break;
    		case ADDR:
    			printf("请输入修改后的住址\n");
    			scanf("%s", p->data[ret].addr);
    			break;
    		case EXITMODIFY:
    			break;
    		default:
    			printf("无该选项,请重新选择\n");
    			break;
    		}
    	}
    	printf("修改联系人信息成功\n");
    }
    
    int DATA_name_cmp(const void* e1, const void* e2)
    {
    	assert(e1&&e2);
    	return (strcmp(((PerInfor*)e1)->name, ((PerInfor*)e2)->name));
    }
    void SWAP(char *e1, char *e2, int width)
    {
    	assert(e1&&e2);
    	int i = 0;
    	for (i = 0; i < width; i++)
    	{
    		char tmp = *((char*)e1 + i);
    		*((char*)e1 + i) = *((char*)e2 + i);
    		*((char*)e2 + i) = tmp;
    	}
    }
    void BUBBLE_sort(void *base, int count, int width, int(*cmp)(const void *e1, const void *e2))
    {
    	assert(base&&cmp);
    	int i = 0;
    	int j = 0;
    	for (i = 0; i < count - 1; i++)
    	{
    		for (j = 0; j < count - i - 1; j++)
    		{
    			if (cmp((char *)base + j*width, (char *)base + (j + 1)*width)>0)
    			{
    				SWAP((char *)base + j*width, (char *)base + (j + 1)*width, width);
    			}
    		}
    	}
    }
    void SORTContact(pContact p)
    {
    	int i = 0;
    	if (p->count == 0)
    	{
    		printf("通讯录为空\n");
    		return;
    	}
    	else
    	{
    		BUBBLE_sort(p->data, p->count, sizeof(PerInfor), DATA_name_cmp);
    	}
    	ShowContact(p);
    	printf("联系人列表排序成功\n");
    }
    void SEARCHContact(pContact p)
    {
    	int ret = findperson(p);
    	printf("%10s %10s %10s %10s %10s\n", "姓名", "年龄", "联系方式", "性别", "住址");
    	printf("%10s ", p->data[ret].name);
    	printf("%9d ", p->data[ret].age);
    	printf(" %10s ", p->data[ret].tel);
    	printf("%9s ", p->data[ret].sex);
    	printf(" %10s ", p->data[ret].addr);
    	printf("\n");
    }
    void CLEARContact(pContact p)
    {
    	p->count = 0;
    	printf("通讯录清空成功\n");
    }
    void ShowContact(pContact p)
    {
    	int i = 0;
    	int j = 0;
    	if (p->count == 0)
    	{
    		printf("通讯录为空\n");
    		return;
    	}
    	else 
    	{
    		if (p->data->flag == 1)
    		{
    			printf("%10s %10s %10s %10s %10s\n", "姓名", "年龄", "联系方式", "性别", "住址");
    			for (i = 0; i < p->count; i++)
    			{
    				printf("%10s ", p->data[i].name);
    				printf("%9d ", p->data[i].age);
    				printf(" %10s ", p->data[i].tel);
    				printf("%9s ", p->data[i].sex);
    				printf(" %10s ", p->data[i].addr);
    				printf("\n");
    			}
    		}
    	}
    }
    void SaveContact(pContact p)//退出程序时,将所录入的信息保存到文件中
    {
    	FILE*pf = fopen(FILE_NAME, "w");
    	if (pf == NULL)
    	{
    		perror("open file for write");
    		exit(EXIT_FAILURE);
    	}
    	//保存信息
    	int i = 0;
    	for (i = 0; i < p->count; i++)
    	{
    		fwrite(p->data+i,sizeof(PerInfor),1,pf );
    		fflush(pf);
    	}
    	fclose(pf); 
    	pf = NULL;
    }
    void DestoryContact(pContact p)
    {
    	//保存内存信息到文件
    	SaveContact(p);
    	printf("信息已成功保存\n");
    	free(p->data);
    	p->data = NULL;
    	p->count = 0;
    	p->capacity = 0;
    }

    #include "Contact.h"
    void menu()
    {
    	printf("********************************\n");
    	printf("*******1.add********2.del*******\n");
    	printf("*******3.modify****4.sort*******\n");
    	printf("*******5.search*****6.show******\n");
    	printf("*******7.clear******0.exit******\n");
    	printf("********************************\n");
    
    
    }
    int main()
    {
    	int input = 0;
    	Contact my_con;
    	InitContact(&my_con);
    	do
    	{
    		menu();
    		printf("请选择操作功能>:");
    		scanf("%d", &input);
    		switch (input)
    		{
    		case ADD:
    			ADDContact(&my_con);
    			break;
    		case DEL:
    			DELContact(&my_con);
    			break;
    		case MODIFY:
    			MODIFYContact(&my_con);
    			break;
    		case SORT:
    			SORTContact(&my_con);
    			break;
    		case SEARCH:
    			SEARCHContact(&my_con);
    			break;
    		case SHOW:
    			ShowContact(&my_con);
    			break;
    		case CLEAR:
    			CLEARContact(&my_con);
    			break;
    		case EXIT:
    			DestoryContact(&my_con);
    			break;
    		default:
    			printf("选择错误,请重新选择\n");
    			break;
    		}
    	} while (input);
    	system("pause");
    	return 0;
    }

    展开全文
  • 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮...

    在这里插入代码片@TOC

    用python和C语言写电话本管理系统,信息保存到本地文件

    ##Python源码

    import json
    people={}
    try:
    	with open ("Book.json","r") as obj:
    		book=json.load(obj)
    except FileNotFoundError:
    	with open ("Book.json","w") as obj:
    		json.dump(people,obj)
    def add():
    	with open("Book.json","r") as obj:
    		book=json.load(obj)
    	name=input("请输入姓名:")
    	if name in book:
    		print("已有该用户!!!")
    		return
    	a=[0]*2
    	age=input("请输入年龄:")
    	a[0]=age
    	phone=input("请输入电话:")
    	a[1]=phone
    	book[name]=a
    	filename="Book.json"
    	with open (filename,"w+") as obj:
    		json.dump(book,obj)
    	print("添加成功!!!")
    def search():
    	with open("Book.json","r") as obj:
    		book=json.load(obj)
    	searchName=input("请输入联系人的姓名:")
    	if searchName in book:
    		print("查询成功!!!")
    		print("--------------------------------------")
    		print("姓名:{} 年龄:{}  电话:{}".format(searchName,book[searchName][0],book[searchName][1]))
    		print("--------------------------------------")
    	else:
    		print("查询失败!无该联系人")
    def change():
    	with open("Book.json","r") as obj:
    		book=json.load(obj)
    	name=input("请输入要修改联系人的姓名:")
    	if name in book:
    		book[name][1]=input("请输入新的电话号码:")
    		with open ("Book.json","w+") as obj:
    			json.dump(book,obj)
    		print("修改成功!!!")
    	else:
    		print("未找到该联系人!!!")
    def delet():
    	with open("Book.json","r") as obj:
    		book=json.load(obj)
    	name=input("请输入要删除联系人的姓名:")
    	if name in book:
    		del book[name]
    		print("删除成功!!!")
    		with open ("Book.json","w+") as obj:
    			json.dump(book,obj)
    	else:
    		print("未找到该联系人!!!")
    def output():
    	with open("Book.json","r") as obj:
    		book=json.load(obj)
    	print("姓名         年龄        电话")
    	print("--------------------------------------")
    	for key,val in book.items():
    		print("{}          {}          {}".format(key,val[0],val[1]))
    		print("--------------------------------------")
    i=1
    while i:
    	print("请选择下列序号:")
    	print("--------------------------------------")
    	print("1.添加联系人        2.查找联系人")
    	print("3.删除联系人        4.修改联系人")
    	print("5.显示所有联系人" )
    	print("--------------------------------------")
    	choose=eval(input())
    	if choose==1:
    		add()
    	elif choose==2:
    		search()
    	elif choose ==3:
    		delet()
    	elif  choose==4:
    		change()
    	elif choose==5:
    		output()
    	print("继续请输入1,退出请输入0")
    	i=eval(input())
    
    

    ##C语言源码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    using namespace std;
    typedef struct person{
    	char name[25];
    	char age[25];
    	char num[25];
    }person;
    
    void write(person p[100], int count) {
    	int i;
    	FILE * fp;
    	char ans[9]="Book.txt";
    	if((fp = fopen(ans, "wb")) == NULL) {
    		printf("\n文件打开失败!\n");
    	}
    	fwrite(&count, sizeof(count), 1, fp);
    	for(i = 1; i <=count; i++) fwrite(&p[i], sizeof(person), 1, fp);//for(i = 0; i <count; i++) fwrite(&p[i], sizeof(person), 1, fp);
    	printf("保存成功!!!\n");
    	fclose(fp);
    }
    
    int read(person p[100], int count) {
    	FILE *fp;
    	int i;
    	int n = 0;
    	char ans[9]="Book.txt";
    	fp = fopen(ans, "rb");
    	if(fp == NULL) {
    		printf("\n通讯录文件不存在!\n"); 
    	}
    	fread(&n, sizeof(n), 1, fp);
    	for(i = count; i < count + n; i++) //for(i = 0; i < n; i++)  
    	{
    		fread(&p[i], sizeof(person), 1, fp);
    	}
    	printf("已从文件中成功读取%d条联系人信息!\n", n);
    	return n;
    }
     
     
    
    void add(person *p, int *count)
    {  
    	int falg = 0;
    	printf("请输入姓名:\n");
    	scanf("%s", p[*count].name);
    	printf("请输入年龄:\n");
    	scanf("%s", p[*count].age);  
    	printf("请输入电话号码:\n");  
    	scanf("%s", p[*count].num); 
    	*count += 1;
    	printf("联系人信息已添加!\n");   
    }
    
    void show(person *p, int *count)
    {
    	int i = 0;
    	printf("共有%d个联系人信息:\n", *count);
    	printf("----------------------------------\n");
    	printf("序号    姓名     年龄     电话\n");
    	if(*count != 0)
    	{
    		for(i = 0; i < *count; i++)  
    		{
    			printf("-----------------------------------\n");
    			printf("%d", i + 1);
    			printf("     %s", p[i].name);
    			printf("     %s", p[i].age);
    			printf("     %s\n", p[i].num);
     
    		}
    		printf("----------------------------------\n");
     
    	}
    	else  
    	{  
    		printf("电话簿内无内容!\n");  
    	}  
    }
    
    int del(person *p, int *count)
    {
    	show(p, count);
    	int k, kk;
    	printf("请输入要删除的编号:"); 
    	scanf("%d", &k);
    	if(k > *count || k < 1) {
    		printf("序号输入错误,请重新输入!");
    		return 0;
    	}
    	kk = k - 1;
    	while (kk <= *count)
    	{
    		p[kk] = p[kk+1];	
    		kk++;
    	}
    	*count -= 1;
    }
    
    void sea(person *p, int *count)
    {
    	int i = 0;
    	int flag = 0;
    	char mz[10];
    	printf("请输入要查找的用户名:");
    	scanf("%s", mz);
    	printf("------------------------------------\n");
    	printf("序号    姓名     年龄     联系电话\n");
    	for (i = 0; i < *count; i++)
    	{
    		if (!strcmp(mz, (*(p + i)).name))
    		{
    			printf("----------------------------------\n");
    			printf("%d", i + 1);
    			printf("     %s", p[i].name);
    			printf("     %s", p[i].age);
    			printf("     %s\n", p[i].num);  
    			flag = 1;
    			printf("-----------------------------------\n");
     
    			break;
    		}
    	}
    	if(flag == 0)
    		printf("无联系人信息!\n");
    }
    
    int change(person *p, int *count)
    {  
    	show(p, count);
    	int k, kk;
    	printf("请输入要修改的编号:\n");
    	scanf("%d", &k);
    	if(k > *count || k < 1) {
    		printf("序号输入错误,请重新输入!");
    		return 0;
    	}
    	kk = k - 1;
    	printf("请输入姓名:");
    	scanf("%s", p[kk].name);
    	printf("请输入年龄:");
    	scanf("%s", p[kk].age);
    	printf("请输入电话号码:");
    	scanf("%s", p[kk].num);
    	printf("第%d个人的信息已修改\n", k);
    }
    int main(){ 
    	person tel[100];
    	person *p = tel;
    	int count = 0, n;
    	while(1) {
    		printf("*******************\n");
    		printf("   1.添加联系人    \n");
    		printf("   2.删除联系人    \n");
    		printf("   3.显示电话本    \n");
    		printf("   4.查找联系人    \n");
    		printf("   5.修改联系人    \n");
    		printf("   6.保存到文件    \n");
    		printf("   7.从文件读取    \n");
    		printf("   0.退出     \n");
    		printf("********************\n");
    		scanf("%d", &n);
    		if(n == 0) break;
    		if(n == 1) add(p, &count);
    		if(n == 2) del(p, &count);
    		if(n == 3) show(p, &count);
    		if(n == 4) sea(p, &count);
    		if(n == 5) change(p, &count);
    		if(n == 6) write(tel, count);
    		if(n == 7) count = read(tel, count);
    		if(n == 0) break;
    	}
    }
    
    展开全文
  • 要求: 数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。 进一步要求*: (1) 能够实现增加、删除、修改功能; (2) 能够实现统计功能等。 思路简介: 要采用模块化思想,...
  • 位图文件大概可以分为四个部分:bmp文件头(BITMAPFILEHEADER),位图信息头...我在用C语言保存一个位图文件的时候,发现保存文件是错误的,无法正常打开,最后查找发现竟然是因为结构体的内存对齐造成的。
  • a) 定义变量,其中保存学生信息的数据文件直接在源代码中初始化; b) 读取学生信息,如果失败,打印失败信息并退出程序; c) 统计学生信息; d) 输出统计信息。 e) 释放内存。 ``` #include #include #include ...
  • 简单文件编辑器 要求:使用C语言实现一个简单的文件编辑器,实现以下功能: 新建文本文件,用户输入文档信息保存文件 打开已有的文本文档,并支持用户编辑 提示:对已有文件的打开并修改可以要求用户输入文件的路径...
  • void store(struct student*stu,int n)//信息保存 { FILE*fp; fp=fopen("c:\\student.txt","w+"); if(fp==NULL) { printf("文件不存在!\n"); } fwrite(stu,sizeof(struct student)*n,n,fp); ...
  • 申请动态内存的方式实现C语言学生信息管理系统, 可以实现学生的增、删、改、查、列、保存、加载等功能的实现,最大的特点就是全部指针实现功能,不必进行传参,节省了内存。
  • 学生信息管理系统(C语言,带文件操作)

    千次阅读 多人点赞 2021-06-12 10:12:29
    这是本人大一的C语言程序设计的结课设计作业,由于这段时间一直在学习Java,C语言很久没学了,所以在CSDN上找了很多代码,经过对比最终发现博客C语言 学生成绩管理系统 控制台 文件操作(未涉及数据库)最符合我的...
  • //可设计用户文件替换,扩展读用户信息代码 --怎么实现 int n = 0; while(TRUE) { system("cls"); login_menu(); printf("\t\t账号:"); gets(account_number); printf("\t\t密码:"); gets...
  • 文件进行读写的函数是fread和fwrite。 在Function0中,我在把pt内的数据写到文件中前,特意把数据全部输出看数据是不是正确的,pt内的数据没有问题。然而数据写到文件中去就出问题了,写进去之后的数据是错误的...
  • C语言文件books.c

    2020-04-13 20:44:42
    1、原始文件中的图书信息与录入的图书信息格式相同,每条图书信息都在一行上,包括书名(不超过50个字符)、作者(不超过20个字符)、出版社(不超过30个字符)和出版日期(不超过10个字符),只由英文字母和下划线...
  • 平时Qt的QFile的习惯了,发现其实连C语言文件操作函数...系统需要在内存中为每个读写的文件开辟一段缓存,缓存中保存文件信息的是FILE结构体,打开文件时就会获得指向FILE的指针。为什么要缓存呢,因为硬盘...
  • 用文件读写的方式对输入的数据进行保存,进入系统前有口令输入,主板块有两个,第一:航班信息管理,第二:客户资料管理. 可以订票,退票,查询航班信息及客户的订票情况.并且输入无效时有错误提示.
  • 1. 书籍信息存放在文件中。 2. 结构体来定义书籍信息。 3. 查询书籍信息时,将查询出的信息放在数组中排序后再显示出来。 4. 以菜单方式让用户选择要执行的功能:从键盘输入一个数字,便可执行某项功能
  • 说到文件操作首先想到的就是文件的打开、关闭、读取以及写入等操作。...C语言中操作文件一个指向文件的指针,这个文件指针包含着这个文件信息C语言中规定为FILE型,声明为: typedef s...
  • 用C语言写的一个学生信息管理系统,包括添加,查找,修改,删除,保存文件等,读取文件留给大家自行设计。。
  • 设计一个人员管理系统,完成基本的增、删、查、改操作,实现对人员信息的控制,同时要求把信息保存到txt文本文件中。可用于学生管理系统,出入人员管理系统,图书馆书籍管理系统等等。 本章在(一)、(二)的基础上...
  • C语言学习笔记 之 关于文件操作函数 文件操作是C语言的最后篇章了,一起来看一下用C语言怎么操作文件 一:文件指针 我们所说的文件不同于一个数据类型,比如一个test.txt文档,它有自己的一些属性,比如文件的当前...
  • C语言编写学生成绩信息管理系统

    千次阅读 多人点赞 2020-07-06 18:27:13
    程序整体采用分模块编程形式,包括主函数在内共10个函数,实现功能有信息的录入、浏览、查询、修改、删除、数据保存文件以及成绩的排序。程序比较简单,结构体成员只有三个,没有什么技术含量,后期看看有没有能力...
  • 家庭住址),并保存到txt文件中。再从文件中读取信息显示在屏幕上; 2.实现人员信息重复显示功能; 3.实现人员信息的添加。 过程如下: 首先建立一个结构体 message #include<stdio.h> #include<stdlib.h&...
  • C语言课程设计:学生...(2)学生信息录入功能(学生信息用文件保存)--输入 (3)学生信息浏览功能--输出 (4)学生信息查询功能--算法 按学号查询 按姓名查询 (5)学生信息的删除与修改(可选项) (6)运用数组或链表实现
  • 目标:通过编程实现一种简单的.dat格式,二进制存储(写)、二进制读取(读)文件的程序,文件保存的是地理信息的DEM融合数据。 优势:数据写到文件效率最高的方法是二进制形式写入。二进制输出避免了再数值转换...
  • c语言 航班信息系统

    2011-10-29 11:27:27
    2. 简单的系统与功能分析,了解航班信息管理系统的需求,用C语言开发航班信息管理系统; 3. 建立数据结构链表,数据内容包括航班号、航线、起飞时间、到达时间、机型、所属公司、价格; 4. 编写实现程序功能的各个...
  • 优先队列构造huffman树,然后压缩编码,由8个字符串的huffman编码转换成unsinged char,保存到压缩文件,从而实现压缩. 要对文件进行解压缩,要将编码的huffman树保存到 压缩文件,否则就没有解码信息了. 要在...
  • 关于文件保存的2个:read()和save();关于实现功能的7个:search()input()del()edit()sort()allprintf();预览的menu() 这里的学生信息只包括了:学号、姓名、年龄、性别、地址、电话、邮箱、生日...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 442
精华内容 176
关键字:

c语言用文件保存信息

c语言 订阅