帮忙修改下read()函数,谢谢
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int num=0;
FILE *fp;
typedef struct node_s{ //typedef:定义别名,作用:定义一个结构体,该结构体的别名为PNode
char name[10];
char date[13];
char earning[10];
char remarks[100];
struct node_s *pnext;
}Node,*PNode;
PNode createNode(){//创建节点,返回一个指针
PNode head = NULL;//指针初始化。
head = (PNode)malloc(sizeof(Node));//创建节点。
head->pnext=NULL;
strcpy(head->name,"\0");//首项仅初始化,不保存数据!~
strcpy(head->date,"\0");
strcpy(head->earning,"\0");
strcpy(head->remarks,"\0");//首项仅初始化,不保存数据!~
return head;
}
int split(char dst[][1000], char* str, const char* spl){/*分割文本*/
int n = 0;
char *result = NULL;
result = strtok(str, spl);
while( result != NULL ){
strcpy(dst[n++], result);
result = strtok(NULL, spl);
}
return n;
}
void save(PNode head){
PNode temp = head->pnext;//默认非初始化项目开始。
fp=fopen("1.txt","wb");
while(temp!=NULL)
{
fwrite(temp,sizeof(struct node_s),1,fp);
temp=temp->pnext;
}
fclose(fp);
}
int read(PNode head){
int i=0,ReadNumFlag=0;
PNode temp = head->pnext;//默认非初始化项目开始。
fp=fopen("1.txt","rb");
while(fread(temp,sizeof(struct node_s),1,fp)==1)
{
i++;
puts(temp->name);
if(ReadNumFlag==0){
PNode head = NULL;
head = createNode();
ReadNumFlag=1;
}
head->pnext=temp;
temp->pnext=NULL;
num++;
}
num=i;
head = (PNode)malloc(sizeof(Node));
printf("这是 本地读取的条数!:%d\n",i);
return(num);
}
void printUI(){
int i,j,k;
system("cls");
system("color 75");
printf("\t\t\t**********************家庭财务管理系统*********************\n");
char str[]={"1:添加信息\n2:删除信息\n3:修改信息\n4:查询信息\n5:显示信息\n6:信息排序\n7:统计信息\n8:多项操作\n0:退出程序\n"};
char ModeName[10][1000];
int cnt=split(ModeName,str,"\n");
for(i=9;i>=1;i--){
printf("\t\t\t ");//初始化_每段
for(k=1;k<=9-i;k++){
printf(" ");
}
for(j=1;j<=i;j++){
printf("* ");
}
printf("\t");
printf("%s",ModeName[9-i]);
printf("\t");
for(j=1;j<=i;j++){
printf("* ");
}
printf("\n");//尾端换行
}
}
void add_new(PNode head){
PNode node = NULL,temp = NULL;
if(NULL==head)return;//这个情况基本不存在
node=(PNode)malloc(sizeof(Node));
printf("请输入姓名,第%d测试\n",num+1);
scanf("%s",&node->name);
printf("请输入时间,第%d项测试\n",num+1);
scanf("%s",&node->date);
printf("请输入收入,第%d项测试\n",num+1);
scanf("%s",&node->earning);
printf("请输入备注,第%d项测试\n",num+1);
scanf("%s",&node->remarks);
node->pnext=NULL;//尾部置NULL
for(temp=head;temp->pnext!=NULL;temp=temp->pnext);//寻找最后节点,最后把temp作为最后一个节点
temp->pnext=node;//链接下一跳的头部
save(head);
printf("\n\t\t\t\t 是否继续添加?[输入Y/N]:");
num++;
//save(head);
if (getch()=='y')
add_new(head);
else{
system("pause");/*跳出*/
}
}
void show_all(PNode head){
if(NULL==head)return;//这个情况基本不存在
PNode temp = head->pnext;//无法添加到for循环初始化中,除非用c99编译器【从非初始化项目,作为第一项!】
for(;temp!=NULL;temp=temp->pnext){
printf("【共%d条】姓名:%s,日期:%s,收入:%s,备注:%s\n",num,temp->name,temp->date,temp->earning,temp->remarks);
}
system("pause");
}
void del_test(PNode *head,int n){//调用 del(&head,n);
int i=0;
PNode temp = NULL;
if(NULL==head)return;//这个情况基本不存在
if(n==1){
temp=*head;//保存欲删除内存
*head=(*head)->pnext;
num--;
free(temp);
}
for(temp=*head,i=1;temp!=NULL;temp=temp->pnext,++i){
if(n==i+1){
PNode t = temp->pnext;
temp->pnext = temp->pnext->pnext;
free(t);
num--;
break;
}
}
}
void CheckMode(int icheckmode){//作用,当用户按下选项之后提示用户当前所选功能
switch(icheckmode){
case 1:printf("\t\t\t\t\t [添加信息]\n");break;
case 2:printf("\t\t\t\t\t [删除信息]\n");break;
case 3:printf("\t\t\t\t\t [修改信息]\n");break;
case 4:printf("\t\t\t\t\t [查询信息]\n");break;
case 5:printf("\t\t\t\t\t [显示信息]\n");break;
case 6:printf("\t\t\t\t\t [信息排序]\n");break;
case 7:printf("\t\t\t\t\t [统计信息]\n");break;
case 8:printf("\t\t\t\t\t [多项操作]\n");break;
case 0:printf("\t\t\t\t\t [退出程序]\n");break;
default:{}
}
}
main(){
int imode;
PNode head = NULL;
head = createNode();
for(;;){
printUI();
printf("\n\n\t\t===========================[%d]请输入您的选择[%d]=============================\n\n\t\t\t\t\t\t ",read(head),read(head));
scanf("%d",&imode);
CheckMode(imode);
switch(imode){
case 1:add_new(head);break;
//case 2:del();break;
//case 3:update();break;
//case 4:search();break;
case 5:show_all(head);break;
//case 6:sort();break;
//case 7:countitem();break;
//case 8:more();break;
case 0:printf("\n\t\t\t [ Honey,I have always been with you ]\n");exit(0);
default:{
printf("重新输入!\n");
system("pause");
getchar();
}
}
}
}







