鱼C论坛

 找回密码
 立即注册
查看: 3470|回复: 11

如何增加一个通讯录信息,信息包括姓名,地址和电话

[复制链接]
发表于 2013-6-20 21:50:32 | 显示全部楼层 |阅读模式
20鱼币
#include <stdio.h>
#include <string.h>
#define bufsize 500
int line(char *path)
{
    int count=0;
    char line[100]={0};
    //char pathopen[100];
   
FILE *fp;
   
    //strcpy(pathopen, path);
   
    fp = fopen(path,"r");
   
    if( NULL == fp )
{
        printf("Pleas load record fisrt!\n");return 1;
    }
   
    while(fgets(line,sizeof(line)-1,fp)){
        count++;
    }
   
    return count;
    fclose(fp);
}
void showrecord(char *path,int loccount)
{
    int i,linenumber;
    char bufname[bufsize],bufadd[bufsize],bufcelnam[bufsize];
   
    FILE *fp;
   
    struct gueststu{
        char guest_name[20];
        char guest_address[500];
        char guest_phone[20];
    };
   
    struct gueststu guest[20];
   
    fp = fopen(path,"r");
   
    linenumber = line(path);
   
    for( i = 0 ;i < (linenumber/3) ; i++ ){
        fgets(bufname ,bufsize ,fp);
        fgets(bufadd ,bufsize ,fp);
        fgets(bufcelnam ,bufsize ,fp);
        
        strcpy(guest[i].guest_name,bufname);
        strcpy(guest[i].guest_address,bufadd);
        strcpy(guest[i].guest_phone,bufcelnam);
    }
   
    fclose(fp);
   
    if ( loccount == -1){
        
               
        for( i =0 ;i < (linenumber/3) ; i++ ){
            printf("Address is %sname is %sPhone number is %s \n",guest[i].guest_address,guest[i].guest_name,guest[i].guest_phone);
            
        }
        
        
    }
   
    else
        printf("Address is %sName is %sPhone number is %s \n",guest[loccount].guest_address,guest[loccount].guest_name,guest[loccount].guest_phone);
   
}

int searchrecord(char *path)
{
   
    char scanfbuf[bufsize],buf[bufsize];
    int count = 0,i;
    FILE *fp;
   
    fp = fopen(path, "r");
   
   
    printf("Enter a name");
    scanf("%s",scanfbuf);getchar();
    printf("Search %s \n\n",scanfbuf);
   
   
    for(i = 0;i < line(path) ; i++){
        fgets(buf, bufsize, fp);
        buf[strlen(buf)-1] = '\0';
        //printf("%s",buf);scanf("%d",&i);
  
        if (strcmp(buf,scanfbuf) == 0)
        {
            //printf("It's the same one");
            break;
        }
        else
            count++;
        
    }
    if(strcmp(buf,scanfbuf) != 0){
        printf("No this guest!\n");
        return 1;
    }
        
   
    //printf(" in line %d \n",count);
    count = count/3;
   
    showrecord(path,count);
   
    return 0;
}

int deleterecord(char *path)
{
char scanfbuf[100];
int j,i,k,linenumber,flag;
    char bufname[bufsize],bufadd[bufsize],bufcelnam[bufsize];
   
    FILE *fp;
   
    struct gueststu{
        char guest_name[20];
        char guest_address[500];
        char guest_phone[20];
    };
   
    struct gueststu guest[20];
   
linenumber = line(path);
   
    fp = fopen(path, "r");
   
    for( i = 0 ;i < (linenumber/3) ; i++ )
{
        fgets(bufname ,bufsize ,fp);
        fgets(bufadd ,bufsize ,fp);
        fgets(bufcelnam ,bufsize ,fp);
        
        
        strcpy(guest[i].guest_name,bufname);
        guest[i].guest_name[strlen(guest[i].guest_name)-1] = '\0';
        strcpy(guest[i].guest_address,bufadd);
        guest[i].guest_address[strlen(guest[i].guest_address)-1] = '\0';
        strcpy(guest[i].guest_phone,bufcelnam);
        guest[i].guest_phone[strlen(guest[i].guest_phone)-1] = '\0';
        
    }
   
    printf("Enter a name :  ");
    scanf("%s",scanfbuf);getchar();
    //printf("%s***\n\n",scanfbuf);
   
for(flag=1,j=0;j<9;j++)
{
  //printf("%s",guest[j].guest_name);scanf("%d",&k);
        k = strcmp (scanfbuf,guest[j].guest_name);
        //printf("%d",k);scanf("%d",&i);
        
  if ( k == 0 )
  {
   for(i = j;i < (linenumber/3); i++ )
   {
                strcpy(guest[i].guest_address,guest[i+1].guest_address);
                strcpy(guest[i].guest_name,guest[i+1].guest_name);
                strcpy(guest[i].guest_phone,guest[i+1].guest_phone);
   }flag = 0;
  }
}
   
if(!flag)
  linenumber=linenumber-3;
   
else
    {
  printf("No Found!\n\n");
        return 1;
    }
    fclose(fp);
   
    fp = fopen(path, "w");
for( i = 0 ;i < (linenumber/3) ; i++ ){
        
        //printf("address is %s\nname is %s\nphone number is %s \n",guest[i].guest_name,guest[i].guest_address,guest[i].guest_phone);
        fprintf(fp,"%s\n%s\n%s\n",guest[i].guest_name,guest[i].guest_address,guest[i].guest_phone);
        
  
    }
    printf("The record has been deleted!\n");
    fclose(fp);
    return 0;
   
}

int main(int argc, const char * argv[])
{
   
    int cmd;
    char path[100],ext;
    path[0] = 0;
   
menu:do{
    printf("******************************\n");
    printf("1.Load record\n");
    printf("2.Show record\n");
    printf("3.Delete record\n");
    printf("4.Inquiry record\n");
    printf("5.Quit\n");
    printf("******************************\n");
    printf("Please choice : ");
    scanf("%d",&cmd);
}while (cmd > 5||cmd<0);
   
   
    switch ( cmd ){
        case 1:{
            FILE *fp;
            
            for( ; ; ){
   
                printf("Please input the file and path name :  ");
                scanf("%s",path);getchar();
               
                fp = fopen(path,"r");
               
                if ( NULL == fp){
                    printf("The path is invaild\n");
                    continue;
                }
               
                break;
               
            }
            fclose(fp);
        }goto menu;
        case 2:{
            
            if (path[0] == 0){
                printf("Please load record first!\n");
                goto menu;
            }
            
            showrecord(path,-1);}goto menu;
  case 3:{
            if (path[0] == 0){
                printf("Please load record first!\n");
                goto menu;}
            
                deleterecord(path);
        }goto menu;
        case 4:{
            if (path[0] == 0){
            printf("Please load record first!\n");
            goto menu;
            }   
   
            searchrecord(path);}goto menu;
        case 5:{
            
            printf("Do you want to quit this programme?\n");
            scanf("%s",&ext);getchar();
            
            if ((ext == 'y')|| (ext == 'Y')){
                printf("Thank you for using this programme!");
                return 10;
            }
            else
                goto menu;
            
        }
            
    }
   
    return 0;
}
QQ截图20130620215025.png

最佳答案

查看完整内容

{:7_175:}可以吗?一起学习~~加油{:7_175:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-20 21:50:33 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-20 22:38:45 | 显示全部楼层
加一个输入并保存的函数可以吗?
意思是加一个功能吗?
把数据保存到文件中去?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-20 23:51:03 | 显示全部楼层
对的!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-20 23:52:20 | 显示全部楼层
对的!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-21 00:17:58 | 显示全部楼层
看看!!!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-21 14:12:03 | 显示全部楼层
看看...............
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-21 21:08:51 | 显示全部楼层

不能按结构输入保存吗?
struct gueststu{
        char guest_name[20];
        char guest_address[500];
        char guest_phone[20];
};
我就想直接你要多少个就直接一个一个写~~
输入到结构体里面,在一个一个保存。
fopen用"a"应该可以了。
这样说可以吗?
{:7_155:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-22 10:04:56 | 显示全部楼层
路过看看,顺便来学习的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-22 21:48:47 | 显示全部楼层
fanki 发表于 2013-6-21 21:08
不能按结构输入保存吗?
struct gueststu{
        char guest_name[20];

我去试试!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-25 21:13:19 | 显示全部楼层
fanki 发表于 2013-6-23 12:50
可以吗?一起学习~~加油

虽然问题没有解决,但还是谢谢了!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-25 21:22:57 | 显示全部楼层
asnly 发表于 2013-6-25 21:13
虽然问题没有解决,但还是谢谢了!!!!!!!!

哪里不行啦?
看看看看~~{:7_155:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-22 17:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表