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

Fermé
Wikiii_Dessantolines - Modifié le 6 nov. 2019 à 15:50
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 7 nov. 2019 à 10:12
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

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 7 nov. 2019 à 10:13
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