社区
C语言
帖子详情
C语言写入文件
luxiliang
2012-03-22 02:13:56
比如:如果向一个文件中写入一个人的信息,包括ID,Name,年龄等三个。
如果要实现当用户输入一个人的信息时,此ID已经存在,则提示“此人信息已存在”。
另外,输入ID后怎么实现查询功能。希望能够有个简单的代码。十分感谢!
我觉得:当用户输入一个信息时,不管是添加还是查询,必须要把原来的所有信息ID和当前输入的信息ID对比,相同则输出这一组的信息,不相同则提示“无此人信息”。就是不知道怎么用代码表示出来。求解!!!
...全文
1487
13
打赏
收藏
C语言写入文件
比如:如果向一个文件中写入一个人的信息,包括ID,Name,年龄等三个。 如果要实现当用户输入一个人的信息时,此ID已经存在,则提示“此人信息已存在”。 另外,输入ID后怎么实现查询功能。希望能够有个简单的代码。十分感谢! 我觉得:当用户输入一个信息时,不管是添加还是查询,必须要把原来的所有信息ID和当前输入的信息ID对比,相同则输出这一组的信息,不相同则提示“无此人信息”。就是不知道怎么用代码表示出来。求解!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NeDong
2012-03-22
打赏
举报
回复
用循环单链表保存数据。
输入数据时,把文件中的数据读入链表中,输入的数与链表对比,
查找的时候,把文件数据读入链表,遍历查找就OK了
可以先写一个从文件中读取信息到链表的函数
自信男孩
2012-03-22
打赏
举报
回复
先把文件中的数据读到内存中,然后每次输入都进行遍历和比较。
DNcx831
2012-03-22
打赏
举报
回复
上学期,写过类似的通讯录程序。
下面是一些主要程序的源代码,可能会给你点参考
********************************************
2.1 通讯录文件操作的实现技术
(主要函数及其使用方法)
一.文件的打开:
a.
fp=fopen("d:\\text.txt","wb")
以二进制写入的方式打开D盘跟目录下的text.txt文件
b.
fp=fopen("d:\\text.txt","ab")
以二进制添加的方式打开D盘跟目录下的text.txt文件
c.
fp=fopen("d:\\text.txt","rb")
以二进制读取的方式打开D盘跟目录下的text.txt文件
二.文件的读取:
fread(cardd,sizeof(struct card),100,fp)
把100个名片的内容从文本文件中读取出来,并赋值给cardd的结构数组中
三.文件的写入:
a.
fwrite(&cardd[NUM],sizeof(struct card),1,fp)
把cardd[NUM]中的名片信息写入到fp指针所指向的文件中
b.
fwrite(cardd,sizeof(struct card),100,fp)
把carrd中100个名片信息一起写入到fp指针所指向的文件中
2.2 通讯录内存的表示结构
(结构体、单向链表、指针等)
名片结构体:
struct card
{
char name[11];
char age[4];
char tel[20];
char addr[40];
char email[30];
char val; //名片是否有效,有效为1,无效为0;
int cod_num; //姓的汉字编码号,用于排序
//struct card *next; //指向下一个名片
}cardd[100];
2.3 人机交互的设计技术
(菜单选择、格式化输入输出主要函数等)
主菜单:
void disp_menu()
{
system("cls");
uchar i;
for(i=0;i<20;i++)
printf("*");
printf("\n");
printf("简易手机通讯录v1.0\n");
printf("1-->新建\n");
printf("2-->查询\n");
printf("3-->修改\n");
printf("4-->删除\n");
printf("5-->显示\n");
printf("6-->退出\n");
for(i=0;i<20;i++)
printf("*");
printf("\n");
}
名片格式化输出:
printf("姓名:\t%s\n年龄:\t%s\n电话:\t%s\n地址:\t%s\n邮箱:\t%s\n",cardd[i].name,cardd[i].age,cardd[i].tel,cardd[i].addr,cardd[i].email);
2.4 基于c语言的汉字编码获取
/*************得到姓的汉字编码,用于排序***********/
int coding(char n)
{
int i,j;
unsigned int m=0;
char s[3]={'\0'},ss;
char ch[17]={'\0'};
s[0]=cardd[n].name[0];
s[1]=cardd[n].name[1];
for(j=0;j<2;j++)
{
ss=s[j];
for(i=(j+1)*8-1;i>=j*8;i--)
{
ch[i]=(ss&0x01)+'0';
ss=(ss>>1);
}
}
for(i=15;i>=0;i--)
m+=(ch[i]-'0')*(int)(pow(2,(15-i)));
/*printf("%s\n",cardd[n].name);
printf("%s\n",s);
printf("%s\n",ch);
printf("%d\n",m);*/
return m;
}
汉字有16位,用s[3]的前二位存储,最后一位存储‘\0’;
按位依次读取汉字的位,并存在ch[17]中;
则ch[17]的是二进制的汉字编码,通过
for(i=15;i>=0;i--)
m+=(ch[i]-'0')*(int)(pow(2,(15-i)));
将二进制的汉字编码转化为十进制的并存到m中;
nanjingnew4
2012-03-22
打赏
举报
回复
[Quote=引用 9 楼 luxiliang 的回复:]
你说的我都晓得。。。关键是代码搞不定啊。。
引用 8 楼 nanjingnew4 的回复:
文件格式可以写成这样
ID|名字|年龄
ID|名字|年龄
ID|名字|年龄
类推。。。竖线作为分隔符,方便判断
打开文件用fopen,写文件可以用fprintf,读文件用fgets,关闭文件用fclose.
试着写个吧,思路方法都给你了
[/Quote]
你觉得哪个地方有问题
luxiliang
2012-03-22
打赏
举报
回复
你说的我都晓得。。。关键是代码搞不定啊。。[Quote=引用 8 楼 nanjingnew4 的回复:]
文件格式可以写成这样
ID|名字|年龄
ID|名字|年龄
ID|名字|年龄
类推。。。竖线作为分隔符,方便判断
打开文件用fopen,写文件可以用fprintf,读文件用fgets,关闭文件用fclose.
试着写个吧,思路方法都给你了
[/Quote]
nanjingnew4
2012-03-22
打赏
举报
回复
文件格式可以写成这样
ID|名字|年龄
ID|名字|年龄
ID|名字|年龄
类推。。。竖线作为分隔符,方便判断
打开文件用fopen,写文件可以用fprintf,读文件用fgets,关闭文件用fclose.
试着写个吧,思路方法都给你了
一古清流
2012-03-22
打赏
举报
回复
文件是怎么保存数据的?
如果每条个人信息都是单独的行的话,可以用getline函数
然后再用字符串比较函数查看该行是否已经存在输入的ID
当然每输入一个新的ID都要从文件头到文件尾循环一次
luxiliang
2012-03-22
打赏
举报
回复
不是作业题,因为我不会用数据库。。。[Quote=引用 4 楼 luciferisnotsatan 的回复:]
引用 1 楼 czh3642210 的回复:
我觉得还是用数据库的好。。。
这是很标准的作业题。
[/Quote]
luxiliang
2012-03-22
打赏
举报
回复
额。。求解
luciferisnotsatan
2012-03-22
打赏
举报
回复
[Quote=引用 1 楼 czh3642210 的回复:]
我觉得还是用数据库的好。。。
[/Quote]
这是很标准的作业题。
qixing1115
2012-03-22
打赏
举报
回复
文件操作的东西多看看吧,不难
luxiliang
2012-03-22
打赏
举报
回复
数据库是好啊,不过是想用文件操作实现。呵呵[Quote=引用 1 楼 czh3642210 的回复:]
我觉得还是用数据库的好。。。
[/Quote]
面包大师
2012-03-22
打赏
举报
回复
我觉得还是用数据库的好。。。
用
C语言
实现高效日志
1.写入日志信息的参数化,类似fprint,printf功能 2.定时保存日志信息到硬盘,默认参数为3000毫秒 3.日志信息达到一定容量后自动保存到硬盘(目前设置为1M) 4.该动态库实现了高效性 5.可动态调整日志等级 6.可动态设置定时时间 7.日志分为3个文件,debug.log保存调试日志信息,normal.log保存普通日志信息,error.log保存错误日志信息 8.日志安全性:日志文件达到一定容量后(目前设置为100M)会把原日志文件备份为.bak后缀的日志文件, 并重新生成新的日志文件,如果已经存在.bak后缀的日志文件会被覆盖 9.设置日志等级为__CLOSE_LOGS时,将关闭日志写入功能
经典编程900例(
C语言
)
经典编程900例(
C语言
) 从零开始到高级 适合基础
c语言
写入运行不了文件,
c语言
写入文件
不能马上更新
今天用
c语言
写入一个文件发现 调用写入函数后 打开文件文件里面是空的。只有程序结束后或关闭指针后文件中的内容才能更新。网上找了半天终于把问题解决了:原来是
C语言
对文件的操作使用了文件缓冲系统。
C语言
对文件的操作使用了缓冲文件系统,具体的说就是系统自动为每个正在使用的文件在内存中开辟了一块缓冲区,从内存向磁盘文件写入的数据必须先送到内存中这个缓冲区,直到这个缓冲区装满之后,才把其中的数据...
c语言
写入文件
时数据丢失,求大神看看为什么不能将数据
写入文件
该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include #includevoid baocunXS(struct stu *head);struct stu *creat();struct stu{int chengji;int xuhao;struct stu *next;//结构体指针自引用};void ps(struct stu *head){struct stu *p...
c语言
写入文件
不写入换行,关于文件操作,碰到空格就换行
该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include #include #include int main(){int i, off_set = 0;char file_to_open[81];char lines[1024], new_string[102400];FILE *fp_read, *fp_write;memset(file_to_open, 0x00, sizeof(fil...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章