8月4日总结部分文件编程,数据库

关于使用库函数调用
例1、用库函数调用编写一个拷贝文件的代码(文件编程)

手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如上

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
    FILE *first;
    FILE *second;
    FILE *to_fd;
    char fh,sh;

    if(argc != 4)
    {
        fprintf(stderr,"usage %s need from and to file!\n",argv[0]);
        exit(-1);
    }

    if((first = fopen(argv[1],"r")) == NULL)
    {
        fprintf(stderr,"open %s error!\n",argv[1]);
        exit(-1);
    }

    if((second = fopen(argv[2],"r")) == NULL)
    {
        fprintf(stderr,"open %s error!\n",argv[2]);
        exit(-1);
    }

    if((to_fd = fopen(argv[3],"w")) == NULL)
    {
        fprintf(stderr,"open %s error!\n",argv[3]);
        exit(-1);
    }

    int f,s,num;
    char nh;

    fh = fgetc(first);
    sh = fgetc(second);
    while(fh != EOF && sh != EOF)
    {
        if(fh < '0' || fh > '9')
        {
            nh = fh;
        }
        else
        {
            f = fh - '0';
            s = sh - '0';
            num = f + s;
            nh = num + '0';
        }

        fputc(nh,to_fd);
        fh = fgetc(first);
        sh = fgetc(second);
    }

    fclose(first);
    fclose(second);

    return 0;
}

**

数据库

**

定义:一个有结构的集成的可共享统一管理的数据集合,由DBMS统一管理。

sqlite3
SQL命令
创建:create table mytable (id integer primary key,name text);
增加:insert into mytable (id,name) values(1,‘wang’);
查看:select * from mytable;

例、

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

void create_table(sqlite3 *db) //创建表
{
    char * sql;
    char * errmsg;
    int rec;
    
    sql = "create table if not exists mytable(id integer primary key,name text);";
    rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);

    if(rec != SQLITE_OK)
    {
        printf("create table error!\n",errmsg);
        exit(-1);
    }
}

void insert_record(sqlite3 *db) //填表
{
    char name[20];
    char *errmsg;
    char sql[100];
    int rec;
    int n;
    int i;
    int id;

    printf("输入多少条:\n");
    scanf("%d",&n);

    for(i = 0;i < n;i++)
    {
        printf("请输入学号,姓名:\n");
        scanf("%d%s",&id,name);
        sprintf(sql,"insert into mytable(id,name) values(%d,'%s')",id,name);

        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);

        if(rec != SQLITE_OK)
        {
            printf("insert error! %s\n",errmsg);
            exit(-1);
        }
    }
    /*
    char * sql;
    char * errmsg;
    int rec;
    
    sql = "insert into mytable(id,name) values (1,'wang');";
    rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);

    if(rec != SQLITE_OK)
    {
        printf("insert error! %s\n",errmsg);
        exit(-1);
    }
    */
}

int display_record(void *para,int n_col,char **value,char **name) //回调函数
{
    int i;

    printf("输出的成员个数:%d\n",n_col);

    for(i = 0;i < n_col;i++)
    {
        printf("%10s",name[i]);
    }
    printf("\n");

    for(i = 0;i < n_col;i++)
    {
        printf("%10s",value[i]);
    }
    printf("\n");
    
    return SQLITE_OK;
}

void inquire_usecb(sqlite3 *db) //查表
{
    char *sql;
    char *errmsg;
    int rec;

    sql = "select * from mytable;";

    rec = sqlite3_exec(db,sql,display_record,NULL,&errmsg);

    if(rec != SQLITE_OK)
    {
        printf("inquire error! %s\n",errmsg);
        exit(-1);
    }
}

void inquire_nocb(sqlite3 *db) //不使用回调函数的查表
{
    char * sql;
    char **result;
    int n_row;
    int n_col;
    char * errmsg;
    int i;
    int rec;

    sql = "select * from mytable;";

    rec = sqlite3_get_table(db,sql,&result,&n_row,&n_col,&errmsg);

    if(rec != SQLITE_OK)
    {
        printf("get table error! %s\n",errmsg);
        exit(-1);
    }

    printf("n_row = %d n_col = %d\n",n_row,n_col);
    printf("result is:\n");

    for(i = 0;i < n_col;i++)
    {
        printf("%10s",result[i]);
    }
    printf("\n");

    for(;i < (n_row + 1) * n_col;i++)
    {
        printf("%10s",result[i]);
        if((i + 1) % n_col == 0)
        {
            printf("\n");
        }
    }

    sqlite3_free_table(result);
}

int main()
{
    sqlite3 *db;
    int rec;

    rec = sqlite3_open("mydata.db",&db); //打开数据库

    if(rec != SQLITE_OK)
    {
        printf("open error,%s\n",sqlite3_errmsg(db));
        exit(-1);
    }
    else
    {
        printf("open success!\n");
    }

    create_table(db); //创建表

    insert_record(db); //填表

    //inquire_usecb(db); //查表
    inquire_nocb(db); //不采用回调函数的查表

    sqlite3_close(db); //关闭

    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
MySQL数据库编程是通过使用MySQL数据库管理系统进行交互和操作数据库的过程。它涵盖了使用SQL语言进行数据查询、插入、更新和删除操作,以及使用编程语言(如Python、Java、PHP等)与MySQL数据库进行连接和交互的方法。 在MySQL数据库编程中,你可以执行以下操作: 1. 连接到MySQL数据库:使用编程语言提供的MySQL连接库,如mysql-connector-python、JDBC等,连接到MySQL数据库。 2. 创建数据库和表:使用SQL语句在MySQL中创建数据库和表,定义表的结构和字段。 3. 插入数据:使用INSERT语句将数据插入到表中。 4. 查询数据:使用SELECT语句从表中检索数据,可以使用各种条件、排序和限制查询结果。 5. 更新数据:使用UPDATE语句更新表中的数据。 6. 删除数据:使用DELETE语句从表中删除数据。 7. 执行事务:使用事务来确保一组操作要么全部成功要么全部失败,保持数据的一致性。 8. 使用索引和优化查询:通过创建适当的索引和优化查询语句,提高数据库查询的性能。 9. 备份和恢复数据:使用备份工具或编程方法对数据库进行备份,并在需要时恢复数据。 以上仅是MySQL数据库编程的基本操作,还有更多高级技术和概念可供学习和应用,如存储过程、触发器、视图等。通过深入学习和实践,你可以掌握更多复杂的数据库编程技巧和最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值