Problème dans boucle « if » avec fonction strstr()

Wikiii_Dessantolines -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J’ai un problème avec mon programme que je n’arrive pas à régler:
J’ai un noeud xml avec un attribut id. Je lis un document txt et j’aimerais renvoyer ok pour toute les lignes où il y a l’id du node entre deux / et où il y a le mots DeviceEnabled.

#define TAILLE_MAX 1000;

xmlChar *content_id=xmlGetProp(cur_node, BAD_CAST « id »);
char chaîne[TAILLE_MAX]=« »;
while(fgets(chaîne,TAILLE_MAX,fichier)!=NULL)
{
if(strstr(chaîne, « /»+content_id+ « /» && strstr(chaîne, « DeviceEnabled »)
{
printf(« ok »);
}
}

Le problème se trouve dans la boucle if.
L’erreur affichée est: invalid operands of types ‘const char[23]’ and ‘ xmlChar *’ to binary operand+.

Merci par avance pour votre aide!

Configuration: iPhone / Safari 13.0.1

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    Tu ne peux pas faire cela.

    strstr()
    est une fonction standard du C dont le prototype est :

    const char * strstr ( const char * str1, const char * str2 );


    Vois : http://www.cplusplus.com/reference/cstring/strstr/

    Tu dois lui passer des chaînes C et comme tu le vois, la fonction est très basique et tu ne peux pas y cumuler les conditions.

    Si tu veux concaténer des
    string
    , tu peux le faire en C++, puis utiliser le résultat de la concaténation produit par l'objet
    string
    avec la méthode string::c_str

    http://www.cplusplus.com/reference/string/string/c_str/

    Là tu utilises une fonction xmlGetProp, issue d'une bibliothèque, qui te retourne un type
    xmlChar *
    selon ton code. Ce type qui n'est ni
    char *
    ni
    string
    . Vois la documentation de ta bibliothèque pour savoir comment tu peux exploiter le résultat retourné sous la forme d'un type standard.

    Dal
    0