2017-10-07 6 views
0

J'ai modifié la question car la solution n'a pas fonctionné comme prévu. Est-il possible d'écrire une sorte d'instruction if ou tout autre code d'ailleurs, qui imprime un message d'erreur quand la chaîne entrée n'existe pas dans ce tableau struct? Après avoir imprimé un message d'erreur, il demande à nouveau la chaîne. J'ai essayé pendant un moment maintenant et ne peux pas sembler le faire correctement.Recherche de chaîne dans le tableau struct

int ordet=0; char_sokafras[20]; 
printf("Name?\n"); 
scanf("%s", soka_fras); 
while(ordet<*num_items) 
{ 
if(strstr(varor[ordet].name, soka_fras)) 
{ 
printf("Name found!\n"); 
soka[hitta_tecken]=varor[ordet]; 
hitta_tecken+=1; 
} 
ordet+=1; 
} 
+1

Avez-vous lu [la documentation] (http://man7.org/linux/man-pages/man3/strstr.3. html)? – alk

+0

la question n'est pas claire. Par exemple, voulez-vous que le code demande une autre chaîne ou non? – user3629249

Répondre

1

strstr renvoie un pointeur sur le début de la sous-chaîne en botte de foin. À partir des pages de manuel:

Si l'aiguille est une chaîne vide, la chaîne haystack est renvoyée; si l'aiguille n'apparaît nulle part dans une botte de foin, la valeur NULL est retournée; sinon, un pointeur sur le premier caractère de la première occurrence d'aiguille est renvoyé.

modifiant la boucle while pour cela devrait être suffisant:

while (strstr(varor[i].name, soka_fras) != NULL) 
+0

@ M.M fixe (besoin de plus de caractères) – Carey