C语言实现将字典dict.txt上传到数据库中

news2024/11/17 21:31:29

代码

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sqlite3.h>

int do_insert(sqlite3 *db,char *word,char *mean);

int main(int argc, const char *argv[])
{
    //以读的方式打开文件
    FILE* fp=fopen("./dict.txt","r");
    if(NULL == fp)
    {
        perror("fopen");
        return -1;
    }
    printf("fopen success\n");

    //创建并打开一个数据库
    sqlite3 *db = NULL;
    if(sqlite3_open("./dict.db",&db) != SQLITE_OK)
    {
        fprintf(stderr,"sqlite3_open:%s %d __%d__\n",\
                sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
        return -1;
    }
    printf("open database my.db success\n");

    //创建一个表格 create table dict(word char,mean char);
    //数据库中sql语句怎么写 这里就怎么写                                      
    char sql[128] = "create table if not exists dict(word char,mean char)";
    char *errmsg = NULL;

    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
    {
        fprintf(stderr,"sqlite3_exec:%s %d __%d__\n",errmsg,sqlite3_errcode(db
        return -1;
    }
    printf("create table dict success\n");

    //定义存放数据的数组
    char buf[128]="";
    char word[64]="";
    char mean[64]="";
    char *res=NULL;
    while(1)
    {
        bzero(buf,sizeof(buf));
        bzero(word,sizeof(word));
        bzero(mean,sizeof(mean));

        res=fgets(buf,sizeof(buf),fp);
        if(NULL == res)
        {
            printf("读取完毕\n");
            break;
        }

        char *p=buf;
        char *wordp=word;
        char *meanp=mean;

        while(*p !=' ' || *(p+1) != ' ')
        {
            if(*p=='\'')
            {
                *wordp++ ='\'';
                p++;
                continue;
            }
            *wordp++ = *p++;
            //printf("%c\n",*p);
        }

        while(*p ==' ')
            p++;

        while(*p!='\n')
        {
            *meanp++ = *p++;
        }
        do_insert(db,word,mean);
    }


    //关闭数据库
    if(sqlite3_close(db) != SQLITE_OK)
    {
        fprintf(stderr,"sqlite3_close:%s %d __%d__\n",\
                sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
        return -1;
    }
    printf("close database my.db success\n");

    return 0;
}

int do_insert(sqlite3 *db,char *word,char *mean)
{
    char sql[128]="";
    sprintf(sql,"insert into dict values(\"%s\",\"%s\")",word,mean);

    //执行命令
    char *errmsg = NULL;
    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
    {
        fprintf(stderr,"__%d__sqlite3_exec:%s\n",__LINE__,errmsg);
        return -1;
    }
    printf("insert into dict success \n");

    return 0;
}

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio run app 设置 release 模式

背景 为验证我们的 SDK 集成在客户应用上的质量&#xff0c;需要我们的测试环境尽量的与客户应用保持一致。客户普遍都会打 release 包并混淆&#xff0c;然后进行上线应用&#xff0c;因此我们在测试过程中也需要使用 release 包进行验证。对于 Android Studio 运行项目&…

基于web的旅游管理系统/旅游网站的设计与实现

摘要 随着计算机技术&#xff0c;网络技术的迅猛发展&#xff0c;Internet 的不断普及&#xff0c;网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高&#xff0c;在线旅游给景区商家的业务带来了更大的发展机遇。 在经济快速发展的带动下&#xff…

这6个免费设计素材网站,设计师都在用,马住

新手设计师不知道去哪里找素材&#xff0c;那就看看这几个设计师都在用的网站吧&#xff0c;免费、付费、商用素材都有&#xff0c;可根据需求选择&#xff0c;赶紧收藏~ 菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库&#xff0c;站内包含设…

如何做好意大利语翻译,北京翻译哪里比较专业?

意大利语被誉为世界上最美的语言之一&#xff0c;在国内应用广泛&#xff0c;市场对意大利语翻译的需求量也很大。那么&#xff0c;如何做好意大利语翻译&#xff0c;北京翻译哪里比较专业&#xff1f; 业内人士指出&#xff0c;要想做好意大利语翻译&#xff0c;首先要充分理解…

【C语言】动态通讯录 -- 详解

⚪前言 前面详细介绍了静态版通讯录【C语言】静态通讯录 -- 详解_炫酷的伊莉娜的博客-CSDN博客&#xff0c;但是静态版通讯录的空间是无法被改变的&#xff0c;而且空间利用率也不高。为了解决静态通讯录这一缺点&#xff0c;这时就要有一个能够随着存入联系人数量的增加而增大…

Maven之tomcat7-maven-plugin 版本低的问题

tomcat7-maven-plugin 版本『低』的问题 相较于当前最新版的 tomcat 10 而言&#xff0c;tomcat7-maven-plugin 确实看起来很显老旧。但是&#xff0c;这个问题并不是问题&#xff0c;至少不是大问题。 原因 1&#xff1a;tomcat7-maven-plugin 仅用于我们&#xff08;程序员&…

为什么企业需要内部威胁检测软件?

在数字时代&#xff0c;企业不仅需要抵御外部威胁&#xff0c;还必须密切关注内部威胁&#xff0c;因为内部因素可能对数据安全造成严重威胁。作为一款强大的内部威胁监测工具&#xff0c;ADAudit Plus 在这一领域发挥着关键作用。本文将深入探讨 ADAudit Plus 在内部威胁监测中…

AUTOSAR NvM Block的三种类型

Native NVRAM block Native block是最基础的NvM Block&#xff0c;可以用来存储一个数据&#xff0c;可以配置长度、CRC等。 Redundant NVRAM block Redundant block就是在Native block的基础上再加一个冗余块&#xff0c;当Native block失效&#xff08;读取失败或CRC校验失…

如何使用PHP开发网页定时刷新功能

如何使用PHP开发网页定时刷新功能 随着互联网的发展&#xff0c;越来越多的网站需要实时更新显示数据。而实时刷新页面是一种常见的需求&#xff0c;它可以让用户在不刷新整个页面的情况下获得最新的数据。本文将介绍如何使用PHP开发网页定时刷新功能&#xff0c;并提供代码示…

带你了解Cloudquery 安装使用功能

&#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609;&#x1f609; &#x1f495;欢迎大家&#xff1a;这里是CSDN&#xff0c;我总结…

以 Java NIO 的角度理解 Netty

文章目录 前言Java NIO 工作原理Selector 的创建ServerSocketChannel 的创建ServerSocketChannel 注册 Selector对事件的处理总结 前言 上篇文章《Netty 入门指南》主要涵盖了 Netty 的入门知识&#xff0c;包括 Netty 的发展历程、核心功能与组件&#xff0c;并且通过实例演示…

剑指 Offer 60. n个骰子的点数(动态规划)

文章目录 题目描述思路分析完整代码 题目描述 把n个骰子扔在地上&#xff0c;所有骰子朝上一面的点数之和为s。输入n&#xff0c;打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案&#xff0c;其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那…

Status 技术的兴衰:从问世到淘汰的历程

标题 Status 技术的兴衰&#xff1a;从问世到淘汰的历程摘要引言Status 问世初期优势挑战 Status 高峰期优势挑战 Status 面临挑战挑战 新兴技术的涌现优势 淘汰的原因结论 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试…

排污口水质的在线监测,实时掌握排口水质助力生态治理

水是生命之源&#xff0c;良好的水生态环境是社会发展的必然要求。然而随着工业化和城市化的发展&#xff0c;人类面临空气和水环境污染等严峻挑战&#xff0c;其中水环境问题尤为突出。排污成为城市和工业生产过程中不可避免的环保问题。 为加快解决生态环境突出问题&#xff…

搞科研需要具备哪些特质?

你认为科研人员需要具备哪些特质才能实现成为大科学家的梦想&#xff1f;回顾那些成功科学家的经历&#xff0c;发现他们身上总会一些共性&#xff0c;正是拥有这些共性&#xff0c;他们最后都在领域内取得了成功。那么&#xff0c;到底都具备哪些共性呢&#xff1f; 好奇心。小…

手把手教你如何挑选适合你的AI编程辅助工具

ChatGPT的普及引发了对AI应用场景的探索和实践的重大变革&#xff0c;垂直领域专业类大模型正正在不断深化落地&#xff0c;其中基于大模型专注于编码的AI工具的出现显著降低了开发的复杂性&#xff0c;提高了开发人员的开发效率&#xff0c;对初级开发人员尤其有帮助。 因此面…

面试官三连问:给我讲讲什么是索引覆盖?什么是索引下推 ? 什么是最左匹配原则 ?

1.什么是索引覆盖 索引覆盖是指在一个查询语句中&#xff0c;某个索引已经 "覆盖了" 需要被查询出来的列&#xff0c;此时就不需要进行回表查询了&#xff0c;这就叫做索引覆盖&#xff01;&#xff01;&#xff08;索引覆盖它是非聚簇索引中的一个特殊情况&#xff…

3.2.0 版本预告!远程日志解决 Worker 故障获取不到日志的问题

Apache DolphinScheduler 3.2.0 版本已经呼之欲出&#xff0c;8 月 中下旬&#xff0c;这个大版本就要和用户见面了。为了让大家提前了解到此版本更新的主要内容&#xff0c;我们已经制作了几期视频和内容做了大致介绍&#xff0c;包括《重磅预告&#xff01;Apache DolphinSch…

快递再多也不怕!你的顺丰快递用上5G“神器”

互联网时代&#xff0c;剁手党疯狂“买买买”之后&#xff0c;快递件量再创新高。《2023年6月中国快递发展指数报告》显示&#xff0c;2023二季度单月快递业务量稳定在百亿件以上。其中&#xff0c;由于“618”电商促销活动与父亲节叠加&#xff0c;6月16日至20日单日揽收量均超…

js ajax 国内快速 映像

ajax 快速 映像 https://www.bootcdn.cn/ axios入门和axios基本请求方式 https://blog.csdn.net/m0_68997646/article/details/127438174 使用 jsDelivr CDN: <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>因为我们国…