| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 330 人关注过本帖
标题:亲 谁给帮忙帮我这程序写个读取文件的函数啊? 急啊。。。各路大神帮帮忙啊 ...
只看楼主 加入收藏
淡淡萱儿
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-3-3
收藏
 问题点数:0 回复次数:1 
亲 谁给帮忙帮我这程序写个读取文件的函数啊? 急啊。。。各路大神帮帮忙啊
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>

typedef struct node //定义单链表
{
   char name[10];
   char tel[11];
   struct node *next;
}students;

void ADD(students *S); //增加数据函数
void SAVE1(students *S); //保存函数1
void SAVE2(students *S); //保存函数2
void DEL(students *S);//删除函数
void SEARCH(students *S);//搜索主函数
void SEARCH_NAME(students *S);//搜索子函数
void SEARCH_TEL(students *S);//搜索子函数
void help();

int num;//程序中要用到的数据的个数

int main()
{
   int choice;//存储选择的项目
     students *point;
     printf("\t****************欢迎使用通讯录***********\n");
     printf("\t\t\t1:增加记录\n");
     printf("\t\t\t2:保存记录\n");
     printf("\t\t\t3:删除记录\n");            
     printf("\t\t\t4:查询记录\n");
     printf("\t\t\t5:结束运行\n");
     printf("\t\t\t6:帮助\n");
     printf("请输入数字进行选择:\n");
while(1)                                                                              
{
      scanf("%d",&choice);
      switch(choice)//选择项目
   {
      case 1:       ADD(point) ;    break;
      case 2:       SAVE1(point);   break;
      case 3:       DEL(point);     break;
      case 4:       SEARCH(point);
                    printf("请输入数字进行选择主菜单项:\n");break;
      case 5:       printf("谢谢使用,再见\n");
                    exit(0);        break;
      case 6:       help();         break;
      default:      printf("输入错误!重新输入!\n");break;
   }
}  
   return 0;
}

void ADD(students *S)
{
     students *r,*s;
     FILE *fp,*fp2,*fp3;
     char c,d;
     int i;//计数器
     S=(students *)malloc(sizeof(students));//创建头结点
     if(S==NULL)
     {
          printf("创建头结点失败,程序返回主菜单!\n");
          return ;
     }//创建失败,程序返回
     S->next=NULL;
     r=S;
     printf("请输入要添加的数据的个数:\n");
     scanf("%d",&num);
     for(i=0;i<num;i++)
     {
          s=(students *)malloc(sizeof(students));//创建新结点  分配空间
          printf("输入姓名:\t");//存储数据
          scanf("%s",s->name);
          printf("输入电话号码:\t");
          scanf("%s",s->tel);
     }
     r->next=NULL;
     getchar();
     printf("需要存储吗?(y/n)\n");
    scanf("%c",&c);
    if(c=='y')
    {
          fp=fopen("通讯录.txt","r+");
             if(fp==NULL)
             {
                getchar();
                printf("没有这个文件,需要创建吗?(y/n)\n");
                scanf("%c",&d);
                if(d=='y')
                {
                    printf("正在创建文件...\n");
                    fp2=fopen("通讯录.txt","w+");
                    fclose(fp2);
                }
                else
                {
                    printf("没有这个文件,保存出错,程序正在返回\n");
                    return ;
                }
   }
   printf("正在保存,请稍后...\n");
   fp3=fopen("通讯录.txt","r+");
   fprintf(fp3,"%s\t%s\t\n","姓名","电话号码");
   r=S;
   for(i=0;i<num;i++)
   {
       r=r->next;
       fprintf(fp3,"%s\t%s\t\n",r->name,r->tel);
   }
   fclose(fp3);
   printf("保存成功\n");
}
printf("按任意键返回主菜单重新选择...\n");
getchar();
system("cls");//清屏
printf("\t\t\t1:增加记录\n");
printf("\t\t\t2:显示记录\n");
printf("\t\t\t3:删除记录\n");            
printf("\t\t\t4:查询记录\n");
printf("\t\t\t5:结束运行\n");
printf("\t\t\t6:帮助\n");
printf("请输入数字进行选择:\n");
    return ;
}

void SAVE1(students *S)//输入数据保存到原链表中
{
int i;//循环控制变量
students *p,*q;
FILE *fp;
p=S;

    for(i=0;i<num;i++)
{
        p=p->next;
}
if(!(q=(students *)malloc(sizeof(students))))//分配结点空间
{
   printf("分配空间失败,程序返回主菜单\n");
   return ;
}
else
{
   p->next=q;//尾插入原来的链表
   q->next=NULL;
   num++;//表长加一
   printf("输入姓名:\t");
   scanf("%s",q->name);
   printf("输入电话号码:\t");
   fp=fopen("通讯录.txt","w");
   fseek(fp,0L,1);
   fprintf(fp,"%s\t%s\t\n",q->name,q->tel);
   fclose(fp);
}
printf("保存完毕!\n");
printf("按任意键返回主菜单!");
getchar();
system("cls");//清屏
printf("\t\t\t1:增加记录\n");
printf("\t\t\t2:显示记录\n");
printf("\t\t\t3:删除记录\n");            
printf("\t\t\t4:查询记录\n");
printf("\t\t\t5:结束运行\n");
printf("\t\t\t6:帮助\n");
printf("请输入数字进行选择:\n");
return ;
}

void DEL(students *S)
{
int i;//记录要删除的数据的位置
int a;
students *p,*q,*r;
p=S;
    for(a=0;a<num;a++)
    {
   p=p->next;
   printf("%s\t%s\t\n",p->name,p->tel);
    }
printf("请问你要删除第几个?\n");
scanf("%d",&i);
if(i<=0||i>num)//判断输入的值是否有效
{
   printf("你输入的值非法,系统将自动返回主菜单\n");
   return ;
}
else//i值正确有效
{
   q=S;
   for(a=0;a<i-1;a++)//找到第i-1个结点
   {
    q=q->next;
   }
   r=q->next;//保存第i个结点的位置
   q->next=r->next;
   free(r);
   num--;//表长减一
   printf("删除成功,请按任意键返回主菜单\n");
     system("cls");//清屏
     printf("\t\t\t1:增加记录\n");
     printf("\t\t\t2:显示记录\n");
     printf("\t\t\t3:删除记录\n");            
     printf("\t\t\t4:查询记录\n");
     printf("\t\t\t5:结束运行\n");
     printf("\t\t\t6:帮助\n");
     printf("请输入数字进行选择:\n");
}
return ;
}
void SAVE2(students *S)
{
    int i;//循环控制变量
    students *p,*q;
    p=S;

    for(i=0;i<num;i++)
    {        p=p->next;}
    if(!(q=(students *)malloc(sizeof(students))))//分配结点空间
    {   
        printf("分配空间失败,程序返回主菜单\n");  
        return ;
    }
    else
    {   
        p->next=q;//尾插入原来的链表  
        q->next=NULL;
        num++;//表长加一   
        printf("输入姓名:\t");   
        scanf("%s",q->name);
        printf("输入电话号码:\t");   
        scanf("%s",q->tel);
    }


}

void SEARCH(students *S)
{
   int num;
   printf("\t***********************************************\n");
   printf("\t\t\t1:按姓名进行查找\n");
   printf("\t\t\t2:按号码进行查找\n");
   while(1)
   {
       scanf("%d",&num);
       switch(num)
       {
       case 1:SEARCH_NAME(S); break;
       case 2:SEARCH_TEL(S);  break;
       default:printf("输入错误!请重新输入!");break;
       }
   }
}

void SEARCH_NAME(students *S)
{
    char search_name[10];//搜索的人名
    int i;//循环控制器
    int flag;//标记
    students *r;//指向头结点
    r=S;
    printf("请输入你要搜索的人名\n");
    scanf("%s",search_name);
   for(i=0,flag=0;i<num;i++)
   {
      r=r->next;
      if(strcmp(r->name,search_name)==0)
      {
            flag=1;
            printf("已经找到数据,正在输出\n");
            printf("%s\t%s\t\n",r->name,r->tel);
      }
   }
   if(flag==0)
        printf("没有找到数据!\n");
    printf("查找结束!按任意键返回子菜单!");
    getch();
    system("cls");
    printf("\t***********************************************\n");
    printf("\t\t\t按姓名进行查找\n");


}
void SEARCH_TEL(students *S)
{
     char search_tel[11];//搜索的电话号码
     int i;//循环控制器
     int flag;//标记
     students *r;//指向头结点
     r=S;
     printf("请输入你要搜索的电话号码\n");
     scanf("%s",search_tel);
     for(i=0,flag=0;i<num;i++)
     {
         r=r->next;
         if(strcmp(r->tel,search_tel)==0)
         {
              flag=1;
              printf("已经找到数据,正在输出\n");
              printf("%s\t%s\t\n",r->name,r->tel);
         }
     }
     if(flag==0)
        printf("没有找到数据!\n");
     printf("查找结束!按任意键返回子菜单!");
     getch();
     system("cls");
     printf("\t***********************************************\n");
     printf("\t\t\t按姓名进行查找\n");
}


void help()
{
    int choice2;
    system("cls");
    printf( "1: 我的系统出现了什么问题\n");
    printf( "2: 怎样删除所有记录\n");
    printf( "3: 什么时候有新的版本\n");
    printf( "4: 新版本中会有什么\n");
    printf( "5: 退出\n");
    scanf("%d",&choice2);
    switch(choice2) //Menu for help
    {
        case 1:
               printf( "有可执行的方法在目录中核对在通讯录.txt中\n");
                 printf( "如果它不在那里就永远不在了如果重命名就命名为 通讯录.txt\n");
               printf("按回车键继续\n");
               getch();
               system("cls");
               help();
               break;
        case 2:
               printf( "删除文件通讯录.txt\n");
               printf("按回车键继续\n");
               getch();
               system("cls");
               help();
               break;
        case 3:
               printf( "等我有创意的时候\n");
               printf( "按回车键继续\n");
               getch();
               system("cls");
               help();
               break;
        case 4:
               printf( "我希望增加以下功能\n");
               printf( "多用户和口令\n");
               printf( "密码 \n");
               printf( "删除所有记录\n");
               printf( "错误校对\n");
               printf( "按回车键继续\n");
               getch();
               system("cls");
               help();
               break;
        default:
               printf( "按回车退出\n");
               printf( "按回车键继续\n");
               break;
    }
}
// Function to ask user to verify intention to delete the node.

各位大神  小妹我初学C语言 各种不懂  各种混乱    周围也是一群菜鸟  束手无策啊!!!求哪位帮帮忙啊
搜索更多相关主题的帖子: 函数 include void 
2012-03-03 14:06
淡淡萱儿
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2012-3-3
收藏
得分:0 
   这个是我完全头大。。。没思路  不是求作业啊  大神吗告诉我思路也成的!!
2012-03-03 14:11
快速回复:亲 谁给帮忙帮我这程序写个读取文件的函数啊? 急啊。。。各路大神帮 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031137 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved