使用MYSQL C APi时出错,原因是传递了垃圾值

使用MYSQL C APi时出错,原因是传递了垃圾值,mysql,c,file-io,garbage,Mysql,C,File Io,Garbage,这是一个C程序,它连接到MySQL服务器,并在linux平台上从具有单个查询的文本文件执行SQL查询 这里,首先建立与数据库服务器的连接 下一行 show tables 从名为“Text.txt”的文本文件中读取 这存储在一个名为line的字符串中。这个字符串被传递到mysql C API的函数mysql_query。然后MySQL数据库将返回结果,即使用函数MySQL\u use\u result的表的名称 以上应为本规范的正确工作方式 但是在将字符串、行(包含文件“text.txt”的数据

这是一个C程序,它连接到MySQL服务器,并在linux平台上从具有单个查询的文本文件执行SQL查询

这里,首先建立与数据库服务器的连接

下一行

show tables
从名为“Text.txt”的文本文件中读取

这存储在一个名为line的字符串中。这个字符串被传递到mysql C API的函数mysql_query。然后MySQL数据库将返回结果,即使用函数MySQL\u use\u result的表的名称

以上应为本规范的正确工作方式

但是在将字符串、行(包含文件“text.txt”的数据)传递给mysql_query()时出现了一些错误

错误:

  You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '�����o���+N�J�O�Q�' at line 2
这意味着一些垃圾值也通过字符串、行与文件中的实际数据一起传递。所以我如何更正这个问题呢

代码:


字符数组
未终止。是的,是错误。我犯了一个愚蠢的错误,并坚持了下去。谢谢@roymustang86。
#include mysql.h
#include stdio.h
main()
{

  MYSQL *conn;
  MYSQL_RES *res;
  MYSQL_ROW row;
  char *server = "localhost";
  char *user = "root";
  char *password = "1"; /* set me first */
  char *database = "mysql";
  conn = mysql_init(NULL);

  /* Connect to database */
 if (!mysql_real_connect(conn, server,
     user, password, database, 0, NULL, 0)) {
   fprintf(stderr, "%s\n", mysql_error(conn));
   exit(1);
 }

 /*reading query from text file*/
 int fd,i=0;
 char line[300];
 char ch1;
 FILE  *fp;
 fp =fopen("text.txt","r");
 if(fp ==NULL )
 {
    printf("File open error.\n");
    exit(-1);
 }

 ch1 = getc(fp);
 while (ch1 != EOF)
 {

      line[i]=ch1;
      ch1 = getc(fp);
      i++;
 }

 printf("%s",line);
 fclose(fp);

/* send SQL query */
if (mysql_query(conn,line )) {

  fprintf(stderr, "%s\n", mysql_error(conn));
  exit(1);
 }
 res = mysql_use_result(conn);

/* output table name */
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
   printf("%s \n", row[0]);

/* close connection */
mysql_free_result(res);
mysql_close(conn);
}