Girilen adın listedeki isimlerle uyuşmadığı durumlarda "Dog found found" yazıyorsa bir kod yazıyorum. Değilse, listeyi yazdırır.Döngüsüm birden çok kez yazdırıyor. Bir kez yazdırmak için nasıl alabilirim?
Sorunum, yalnızca bir kez değil, "Dog found found" ı birden çok kez yazdırıyor.
Kodu: Arama tamamlanana kadar
void search (struct dog *list)
{
char name[NAME_LEN+1];
struct dog *p;
printf("Enter dog’s name: \n");
scanf("%s", name);
name[0] = toupper(name[0]);
for(p = list; p != NULL; p = p->next)
{
if(strcmp(name, p->dog_name) != 0)
{
printf("Dog not found.");
}
else
{
printf("\n");
printf("%d \t",p->number);
printf("%s \t",p->dog_name);
printf("%s \t",p->breed);
printf("%s \t",p->owner_last_name);
}
}
}
Sorunuzla alakasız, ancak 'scarf' ifadeniz, kullanıcı adı NAME_LEN karakterinden daha uzun bir ad girdiğinde arabellek taşmasına tabidir. –