У меня есть код, который считывает данные из некоторых файлов, а затем пытается добавить эти данные построчно в базу данных. Проблема в том, что когда я запускаю программу, она просто добавляет первую строку данных в базу данных, а затем появляется Segmentation fault (core dumped)
.
void add_line_to_db(char *line, PGconn *connection, PGresult *re){
char query[50];
split(line);
sprintf(query, "INSERT INTO fp_stores_data_test "\
"VALUES (%s,'%s','%s',%s,%s,%s,%s,%s);"
,splitted_line[0],splitted_line[1]
,splitted_line[2],splitted_line[3]
,splitted_line[4],splitted_line[5]
,splitted_line[6],splitted_line[7]);
re = PQexec(connection,query);
if(PQresultStatus(re) != PGRES_TUPLES_OK){
printf("%s\n", PQresultErrorMessage(re));
}
PQclear(re);
}
void read_file_line_by_line(char *filename, char *address, PGconn *connection, PGresult *re){
char file_address[50];
strcpy(file_address, address);
strcat(file_address, filename);
FILE *file = fopen(file_address, "r");
char line[256];
while(fgets(line, sizeof(line), file)){
add_line_to_db(line, connection, re);
printf("this line!\n");
}
fclose(file);
}
int main(){
//char address = "/tmp/final_project/";
PGconn *con;
PGresult *res;
con = make_connection();
//make_connection(con);
create_table_fp_stores_data(res, con);
char file_name[20];
list_dir_files("/tmp/final_project/");
for(int i=0; i<number_of_files; i++){
strcpy(file_name, dir_content[i]);
read_file_line_by_line(file_name, "/tmp/final_project/", con, res);
}
return 0;
}
Массив splitted_data
представляет собой двумерный глобальный массив символов, который будет смена на каждые 1009 л *. хотя функция add_line_to_db
завершится для первого l oop, но printf("line line\n");
после этого не запустится. Я пытаюсь избежать перегрузки, и тогда я не хочу помещать здесь весь свой код, но, с другой стороны, я не знаю, в чем именно проблема, поэтому я не могу поместить сюда определенные строки c.