9月4日作业

思维导图

代码

#include <myhead.h>

int main() {
    FILE* fp = fopen("dict.txt", "r");
    if (NULL == fp) {
        fprintf(stderr, "文件打开失败\n");
        return -1;
    }

    char line[512];        // 用于存储每行文本的字符数组
    char word[256];        // 存储单词的字符串
    char meaning[256];     // 存储意思的字符串
    int lineCount = 0;     // 记录读取的行数

    // 创建或连接到SQLite数据库
    sqlite3* db = NULL;
    if (sqlite3_open("./word_database.db", &db) != SQLITE_OK) {
        fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));
        return -1;
    }

    // 创建表格
    const char* sql = "CREATE TABLE IF NOT EXISTS words (id INT PRIMARY KEY AUTOINCREMENT, word char, meaning char);";
	char* errmsg = NULL;
    if (sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK) {
        fprintf(stderr, "创建表格失败: %s\n", errmsg);
        sqlite3_close(db);
        return -1;
    }

    while (fgets(line, sizeof(line), file)) {
        // 使用 strtok() 来分割每行文本
        char* token = strtok(line, "   "); // 使用三个空格作为分隔符
        if (token) {
            strncpy(word, token, sizeof(word));
            token = strtok(NULL, "   "); // 继续查找下一个分割符
            if (token) {
                strncpy(meaning, token, sizeof(meaning));
                //printf("Line %d: Word: %s, Meaning: %s\n", lineCount + 1, word, meaning);
				printf("正在导入...\n");

                // 插入数据到数据库
                char insertSQL[512];
                snprintf(insertSQL, sizeof(insertSQL), "INSERT INTO words (word, meaning) VALUES ('%s', '%s');", word, meaning);
                if (sqlite3_exec(db, insertSQL, 0, 0, 0) != SQLITE_OK) {
                    fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
                }
            }
        }
        lineCount++;
    }
	printf("导入完成\n");

    fclose(file);
    sqlite3_close(db); // 关闭数据库连接

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值