2017-10-07 9 views
0

Ich habe die Frage bearbeitet, da die Lösung nicht wie vorgesehen für mich funktioniert hat. Ist es möglich, eine Art if-Anweisung oder irgendeinen anderen Code zu schreiben, der eine Fehlermeldung ausgibt, wenn die eingegebene Zeichenfolge in diesem struct-Array nicht existiert? Nachdem eine Fehlermeldung ausgegeben wurde, wird erneut nach der Zeichenfolge gefragt. Ich habe es schon eine ganze Weile versucht und es scheint nicht richtig zu sein.Suche nach einem String im struct Array

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

Haben Sie gelesen haben [die Dokumentation] (http://man7.org/linux/man-pages/man3/strstr.3. html)? – alk

+0

ist die Frage unklar. Möchten Sie beispielsweise, dass der Code nach einer anderen Zeichenfolge fragt oder nicht? – user3629249

Antwort

1

strstr gibt einen Zeiger auf den Anfang des Teils in Heuhaufen. Von Hilfeseiten:

Wenn Nadel eine leere Zeichenfolge ist, wird Heuhaufen zurückgegeben; Wenn Nadel nirgends im Heuhaufen auftritt, wird NULL zurückgegeben; andernfalls wird ein Zeiger auf das erste Zeichen des ersten Auftretens von Nadel zurückgegeben.

Änderung der while-Schleife dazu genug sein sollte:

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

@ M.M behoben (brauchen mehr Zeichen) – Carey