Fonction Strcat

ydu Messages postés 61 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 6 août 2009 - 10 avril 2009 à 15:24
ydu Messages postés 61 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 6 août 2009 - 10 avril 2009 à 16:34
Bonjour,

j'utilise dev C++, vous trouverez ci-dessous une partie de mon code et la compil bloque sur la fonction Strcat

Pouvez vous me dire ce qui ne va pas svp ?

J'ai bien déclaré string.h


int main(int argc, char *argv[])
{
char groupe[5];
char test1[50];
char test[100];
printf ("Quel Groupe souhaitez vous analyser ?\n");
scanf("%s",&groupe);


test1="SELECT * FROM base WHERE CODNIV=";
test=strcat(test1,groupe);

ydu

2 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
10 avril 2009 à 15:32
Salut
Il y a plein d'erreur dans ce petit code:
scanf("%s",groupe); Il ne faut pas le & car groupe est déjà un pointeur
On ne copie pas un tableau comme tu essaye de le faire, on fait:
strcpy(test1,"SELECT * FROM base WHERE CODNIV=");
et enfin strcat(test1,groupe); suffit sinon tu essayes d'égaler 2 pointeurs

A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
0
ydu Messages postés 61 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 6 août 2009
10 avril 2009 à 16:34
Merci beaucoup pour ta réponse, j'ai corrigé certain points que tu as mentionné.

Voila le fameux de l'histoire, le code ci dessous fait une requete SQL sur une base Access

la ligne de ma requete à savoir:
char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684'";

je voudrai rendre dans cette requête CODNIV variable grace a ce que saisie l'utilisateur (variable groupe)

J'ai vue que cela était ^possible grace à la fonction strcat

Merci de votre aide

*********************
/* Connexion et execution de requete sur un base de donnees Microsoft Access */
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <string.h>


#pragma comment(lib, "odbc32.lib")


int main(int argc, char *argv[])
{
char groupe[5];
char test[50];


printf ("Quel Groupe souhaitez vous analyser ?\n");
scanf("%s",groupe);




strcat(strcpy(test,"SELECT * FROM base WHERE CODNIV="),groupe);



    HENV hEnv;
    HDBC hDbc;
    RETCODE rc;


    int iOut;
    char strOut[256];
    char szDSN[256] = "driver={Microsoft Access Driver (*.mdb)};dbq=[ydu.mdb];";


    /* char szSql[256] = "SELECT * FROM base"; */
    char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684'";
    /* char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684' and CODPRD='01.006'"; */


    int ret1;
    int ret2;
    int ret3;
    int ret4;
    int ret5;


    char CODNIV[128];
    char TYPNIV[128];
    char CODPRD[128];
    int PRODC;
    int OBJANNEE;


    /* 1 - Connexion a la BDD Access */
    rc = SQLAllocEnv(&hEnv);
    rc = SQLAllocConnect(hEnv, &hDbc);
    rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, SQL_NTS, (unsigned char*)strOut, 255, (SQLSMALLINT*)&iOut, SQL_DRIVER_NOPROMPT);




    /* 2 - Preparation de la requete */
    HSTMT hStmt;
    rc = SQLAllocStmt(hDbc,&hStmt);
    rc = SQLPrepare(hStmt,(unsigned char*)szSql, SQL_NTS);




    /* 3 - Execution de la requete (Apres avoir binder les champs de resultats) */
    /* rc = SQLBindCol(hStmt, tab_column, tr_type, tr_value, tr_len, len_or_ind); */
    rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, CODNIV, 128, (SQLINTEGER*)&ret1);
    rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, TYPNIV, 128, (SQLINTEGER*)&ret2);
    rc = SQLBindCol(hStmt, 3, SQL_C_CHAR, CODPRD, 128, (SQLINTEGER*)&ret3);
    rc = SQLBindCol(hStmt, 4, SQL_C_ULONG, &PRODC, 4, (SQLINTEGER*)&ret4);
    rc = SQLBindCol(hStmt, 5, SQL_C_ULONG, &OBJANNEE, 4, (SQLINTEGER*)&ret5);
    rc = SQLExecute(hStmt);


    /* IMPORTANT : Pour les requetes du style DROP/CREATE/UPDATE... */
    /*Vous pouvez utiliser :  rc = SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS); */


    /* 4 - Boucle pour afficher les resultats */
    while(!(SQLFetch(hStmt) & 0xFFFE))
    {
    printf("{%s}{%s}{%s}{%i}{%i}\n",CODNIV, TYPNIV, CODPRD, PRODC, OBJANNEE);
    }


    /* 5 - Liberations et fermeture de la connection a la BDD */
    rc = SQLFreeStmt(hStmt, SQL_DROP);
    rc = SQLDisconnect(hDbc);
    rc = SQLFreeEnv(hEnv);


    getch();


    return 0;
}
****************************
ydu
0
Rejoignez-nous