Здравствуйте, у меня проблема с этой функцией recup()
.Цель recup()
- вставить все слова, найденные в строке chaine
, слово за словом, в базу данных.Слова приходят из цепочки, которая задается пользователем с помощью fgets.Проблема, с которой я сталкиваюсь, состоит в том, что она вставляет только слова, длина которых равна первому слову chaine
.Например, если я напишу «Я хочу кота», будут вставлены только «я» и «а».
int recup(char *chaine){
char tab[30] ={0};
char delim[] = " ";
char *ptr = strtok(chaine,delim);
int rc =0;
char *sql ="INSERT INTO newTable SELECT * FROM dbTable where lemme =?";
sqlite3_stmt *stmt = 0;
rc = sqlite3_prepare_v2(db,sql,-1,&stmt,0);
do {
// Expected word is printed here
printf("%s\n",ptr);
strcpy(tab,ptr);
// For some reason, only words that match the length
// of the first word are being inserted
rc = sqlite3_bind_text(stmt,1,tab,-1,SQLITE_STATIC);
rc = sqlite3_step(stmt);
ptr = strtok(NULL,delim);
} while(ptr != NULL);
rc = sqlite3_finalize(stmt);
return 0;
}
#include <ansi_c.h>
#include <sqlite3.h>
#include "fdata.h"
sqlite3 *db;
int main(int argc, char* argv[]) {
int rc = 0;
char chaine[100] = {0};
rc = sqlite3_open("lexique.db",&db);
check(rc);
createNewT();
question(&chaine);
recup(&chaine);
sqlite3_close(db);
return 0;
}