如何用C语言实现逐行读取文件并存入数据库?
- 行业动态
- 2025-01-22
- 1
在C语言中,可以使用标准的文件I/O函数来读取文件的每一行。以下是一个示例代码,演示了如何打开一个文件并逐行读取其内容:,,“
c,#include,#include,,int main() {, FILE *file = fopen("database.txt", "r");, if (file == NULL) {, perror("Error opening file");, return EXIT_FAILURE;, },, char *line = NULL;, size_t len = 0;, ssize_t read;,, while ((read = getline(&line, &len, file)) != -1) {, printf("%s", line);, },, free(line);, fclose(file);, return 0;,},
`
,,这个程序首先尝试打开名为"database.txt"的文件进行读取。如果文件成功打开,它会使用
getline`函数逐行读取文件内容,直到文件末尾。每读取一行,它就会打印该行的内容。程序释放分配的内存并关闭文件。
在C语言中,读取文件的每一行并存储到数据库中是一个常见的任务,以下是一个详细的步骤说明和示例代码,展示如何完成这个任务。
包含必要的头文件
我们需要包含一些必要的头文件,以便能够使用标准I/O函数、字符串操作函数以及数据库连接函数。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "mysql/mysql.h"
配置数据库连接参数
定义一个结构体来保存数据库连接的参数,包括服务器地址、用户名、密码、数据库名等。
typedef struct { char *host; char *user; char *pass; char *dbname; unsigned int port; } DBConfig; DBConfig db_config = { "localhost", "root", "password", "testdb", 3306 };
初始化数据库连接
编写一个函数来初始化数据库连接,并检查连接是否成功。
MYSQL *init_db() { MYSQL *conn = mysql_init(NULL); if (conn == NULL) { fprintf(stderr, "%s ", mysql_error(conn)); exit(EXIT_FAILURE); } if (mysql_real_connect(conn, db_config.host, db_config.user, db_config.pass, db_config.dbname, db_config.port, NULL, 0) == NULL) { fprintf(stderr, "%s ", mysql_error(conn)); mysql_close(conn); exit(EXIT_FAILURE); } return conn; }
读取文件每一行并插入数据库
编写一个函数来读取文件的每一行,并将其内容插入到数据库中,假设我们有一个名为data
的表,包含一个名为content
的列。
void read_file_and_insert(const char *filename, MYSQL *conn) { FILE *file = fopen(filename, "r"); if (file == NULL) { perror("Failed to open file"); exit(EXIT_FAILURE); } char line[1024]; while (fgets(line, sizeof(line), file)) { // 去掉换行符 size_t len = strlen(line); if (len > 0 && line[len 1] == ' ') { line[len 1] = '
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/126911.html