栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言将记录写入文件中并进行读取记录按关键字搜索例子

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言将记录写入文件中并进行读取记录按关键字搜索例子

#C语言将记录写入文件中并进行读取记录按关键字搜索例子
##题目

;

##个人体会:
1.利用每条记录中的分隔符,进行拆分并拼接,注意Remove the ‘n’,at the end of each record.
2.注意拼接时,间隔的字节数,指针很好用,可以精确到每个字节.
3.中文记录运行正常.
4.体会到最简易的搜索方法.
5.C语言的拼接方法不如python中的更易于直接使用,尤其是python进行多级dict的层序遍历时。
6.没有找到类似strcpy中可以按地址加上字节数的方法进行string复制,有待改进.
没有去掉原来注释掉的部分,为了以后有更多的思考.
7.测试环境codelite v16.0.0.

#include 
#include 
#include 

typedef struct product_st
{
    char name[20];
    char place[20];
}Prdct;

int main(int argc, char *argv[])
{
    enum {N = 4};
    Prdct prdt[N];
    int i;
    
    FILE *fp;
    fp = fopen("D:\prod.txt","w");
    
    if(fp == NULL)
    {
        fprintf(stderr,"open() failed!");
        exit(1);
    }
    
    for(i = 0; i < N; i++)
    {
        puts("nEnter product name and place:n");
        gets(prdt[i].name);
        fwrite(&prdt[i].name,strlen(prdt[i].name),1,fp); 
        fputc(',',fp);
        gets(prdt[i].place);
        fwrite(&prdt[i].place,strlen(prdt[i].place),1,fp);
        fputc('n',fp);
    }
    
    fclose(fp);
    puts("Save file successfully!n");
    
    // Read file
    fp = fopen("D:\prod.txt","r");
    
    if(fp == NULL)
    {
        fprintf(stderr,"open() failed!");
        exit(1);
    }
    
    char name[256]= {''};
    
    //Find product name according place.
    // Read one line.
    char pname[20];
    char pplace[20];
    char tmp[20];
    char result[256];
    char *p = result;
    int idx;
    int cnt = 0;
    puts("Enter place like[USA,UK]");
    gets(tmp);
    //tmp[strlen(tmp)+1] = '';

    while(fgets(name,256,fp))
    {    
        //read one record to name.
        //fscanf(fp,"%[^n]",name);
        //fscanf(fp,"%[^n]",name);
        for(i = 0; i < strlen(name); i++)
        {
            if(name[i] == ',')
            {
                 idx = i;
            }
        }
        //get product name.
        for(i = 0; i < idx; i++)
        {
            *(pname + i) = name[i];
        }
        // Notice.
        pname[i] = '';
        //get product place.
        strcpy(pplace, &name[idx+1]);
        //remove the 'n',at the end.
        pplace[strlen(pplace)-1]= '';
        printf("pname = %s place = %sn",pname,pplace);
        if((strcmp(tmp,pplace)) == 0)
        {
           strcpy(p,pname);
           puts(pname);
           puts(p);
           puts("strcpyn");
           //p pointer address increae one pname bytes
           p = p + strlen(pname);
        }
        
        //puts(tmp);
        //puts(pplace);
//        for(i = 0; i < tmp[i] != ''; i++)
//        {
//            if(tmp[i] == pplace[i])
//            {
//                cnt++;
//            }
//            else
//            {
//                break;
//            }
//        }
//        if(cnt == strlen(pplace))
//        {
//            puts(tmp);
//            puts(pplace);
//        }
    }
    
    p[strlen(p)+1] = '';
    puts("n");
    puts(result);
//    char tmp[20]= {''};
//    
//    puts("Enter place like[USA,UK]");
//    gets(tmp);
//    for(i = 0; i < N; i++)
//    {
//        if((fread(&prdt[i],sizeof(prdt[i]),1,fp)) > 0)
//        {
//            if(strcmp(tmp,prdt[i].place) == 0)
//            {
//                strcpy(name,prdt[i].name);
//            }
//        }
//        
//    }
//    
//    printf("%s n", name);
    puts("Hello, World!");
    
    fclose(fp);
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号