hello guys, i just make SQLite Callback to structure, but why the output its like this?
My code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlite3/sqlite3.h"
typedef struct {
int totalArray;
char** azColName;
char** value;
} SQLiteCallback;
static int callback(void *data, int argc, char **argv, char **azColName) {
((SQLiteCallback*)data)->azColName = malloc(argc);
((SQLiteCallback*)data)->value = malloc(argc);
memset(((SQLiteCallback*)data)->azColName, 0, argc);
memset(((SQLiteCallback*)data)->value, 0, argc);
((SQLiteCallback*)data)->totalArray = argc;
for (int a = 0; a < argc; a++) {
((SQLiteCallback*)data)->azColName[a] = malloc(strlen(azColName[a]) + 1);
((SQLiteCallback*)data)->value[a] = malloc(strlen(argv[a]) + 1);
memset(((SQLiteCallback*)data)->azColName[a], 0, strlen(azColName[a]) + 1);
memset(((SQLiteCallback*)data)->value[a], 0, strlen(argv[a]) + 1);
memcpy(((SQLiteCallback*)data)->azColName[a], azColName[a], strlen(azColName[a]));
memcpy(((SQLiteCallback*)data)->value[a], argv[a], strlen(argv[a]));
printf("(callback) %s: %s\n", ((SQLiteCallback*)data)->azColName[a], ((SQLiteCallback*)data)->value[a]);
}
return 1;
}
int main(int argc, char* argv[]) {
sqlite3 *db;
SQLiteCallback cb;
sqlite3_open("test.db", &db);
sqlite3_exec(db, "SELECT * from COMPANY", callback, &cb, NULL);
for (int a = 0; a < cb.totalArray; a++) printf("(main) %s: %s\n", cb.azColName[a], cb.value[a]);
sqlite3_close(db);
return 0;
}