gpt4 book ai didi

mysql - C(树莓派)从文本文件中读取不同长度的行

转载 作者:行者123 更新时间:2023-11-30 21:10:06 24 4
gpt4 key购买 nike

我试图从文本文件中获取数据并将其发送到 SQL 数据库,但一直失败。有时数据到达数据库,但我总是遇到段错误。因此,我首先关注以正确的方式从文本文件中获取数据。

如何将 2 行文本和 1 个日期放入 SQL 行的 3 个单独的字符串中?

我的 SQL 输出将是这样的(也因为这部分似乎有时有效):

sprintf(SQLstring,"INSERT INTO TempHumid VALUES(unix_timestamp(now()),%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,'%s','%s',%s)",(temp / 10.0),(rh / 10.0),(light / 500.0),(ph * 10.0),(ligh\
tchk * 1.0),(tab1var1 * 10.0),(tab1var2 * 10.0),(tab1var3 * 10.0),(tab1var4 * 10.0),(tab1var5 * 10.0),(tab1var6 * 10.0),(tab1var7 * 10.0),(tab1var8 * 10.0),(tab1var9 * 10.0),(tab1var10 * 10.0),(text1),(text2),(date));

最佳答案

在 C 语言中,您可以通过这种简单的方式逐行读取文本文件:

(“眉头”应该足够大。)

  char *sql;
char frow[1024];
FILE *fp;

fp = fopen( txt_file, "r" );

while ( fgets( frow, sizeof( frow ), fp ) != NULL ) {
puts( frow );
}

fclose( fp );

然后您可以按照您需要的方式使用“strtok”函数分解“frow”字符串。

这里是一个示例,说明如何将所需数据插入 MySQL 数据库:

  if ( asprintf( &sql, "INSERT INTO some_table (col1, col2, col3) VALUES ('%s', '%s', '%s')", a, b, c ) < 0 ) {
syslog( LOG_ERR, "asprintf error!" );
return (-1);
}

if ( sql_cmd( sql ) < 1 ) { // my function..
syslog( LOG_ERR, "MySQL error! %s", mysql_error( conn ) );
}

free( sql );

希望这对您有帮助。

关于mysql - C(树莓派)从文本文件中读取不同长度的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32157992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com