Problème dans boucle « if » avec fonction strstr() [Fermé]

Signaler
-
Messages postés
5436
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
23 novembre 2020
-
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
A voir également:

1 réponse

Messages postés
5436
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
23 novembre 2020
914
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