void SearchDB()
{
char n[DB_SIZE][NAME_LEN], r;
printf("[ Search ]\n");
printf("Input Name for Searching : ");
scanf("%s", n);
r = find(n);
if (-1 == r)
{
printf("No Data Found.\n\n");
return;
}
printf("---> Name : %-20s / Tel : %-20s / Address : %s \n", name[r], phone[r], address[r]);
printf ("\n");
}
int find(char n[])
{
int f;
for (f = 1; f <= DB_SIZE; f++)
{
if (!strcmp(name[f], n))
return f;
}
return -1;
}
SearchDB함수 내에서 find함수 호출을 할라는데
find함수가 이해가 안간다
n이 name[f]의 값과 다를경우 f의 값을 SearchDB함수 안에 find(n)에 반환한다는거냐?
그럼 return -1까진 안넘어가서 -1은 반환안되는거고?
!strcmp 이딴 식으로 조건문 걸어서 헷갈린거?
저부분이 잘 이해가 안됨
strcmp가 두 문자열을 비교해서 같으면 0을 리턴함 근데 if(0) 은 false임
그럼 false라서 return f는 안하고 반복 계속 한다는거지?
그러니까 !strcmp에서 두 문자가 다를경우 0을 반환, false가 되니까 return f로 안들어가고 반복을 계속하다가
같은문자가 나올경우 1을 반환, true가 되서 return f를 실행, 만약 반복이 끝날때까지 0이 반환될경우 그냥 return -1을 한다는 거고?
아니 완전 반대로 생각하면 되
strcmp가 아니라 !strcmp면 맞는말 아녀?
strcmp()는 두 문자열이 같으면 0을 리턴 그런데 if(0)은 if(false)와 같음 그래서 '!'를 사용해 if(true)로 만들어줌
ㅇㅋ 굳