Вот адаптация вашего кода, которая, кажется, работает так, как я ожидал:
#include <stdio.h>
struct addressBook
{
int entryNum;
char name[100];
char address[100];
};
static
void printAddress(int n_addr, struct addressBook addresses[n_addr], int num)
{
for (int n = 0; n < n_addr; n++)
{
if (addresses[n].entryNum == num)
{
printf("\nBELOW IS ADDRESS # %i DETAILS:\n", num);
printf("Address Book Number: %i\n", addresses[n].entryNum);
printf("Name: %s\n", addresses[n].name);
printf("Address: %s\n", addresses[n].address);
}
}
}
int main(void)
{
struct addressBook addresses[10] =
{
{ 1, "John Doe", "1234 Any St, Some Town, CA 94301" },
{ 2, "Mary Fog", "1270 Some St, Any Town, CA 94303" },
{ 3, "Anne Pit", "1240 Any Rd, Some City, CA 94301" },
{ 4, "Bill Zoo", "1252 Some St, Any Town, CA 94303" },
{ 5, "Phil Tin", "1258 Any Rd, Some City, CA 94301" },
};
int num;
printf("Entry number? ");
scanf("%i", &num);
printAddress(5, addresses, num);
return 0;
}
Вы можете добавить return;
или break;
после печати в теле if
в функции. Если вы добавите return;
, вы можете добавить 'printf ("Entry% d not found \ n", num); `после l oop и до возврата функции.
Обратите внимание, что вы не обычно не нужны пробелы перед символами новой строки; концевые заготовки неаккуратные. Кроме того, теперь есть новая строка после имени; это выглядит ужасно, если вы запустите имя в теге Address:
.
Учитывая, что программа addr83
скомпилирована из addr83.c
, пример запуска:
$ addr83
Entry number? 4
BELOW IS ADDRESS # 4 DETAILS:
Address Book Number: 4
Name: Bill Zoo
Address: 1252 Some St, Any Town, CA 94303
$