stcmp 함수를 사용해서 문자열이 같은지 안 같은지 비교하려고 하는데 어디가 잘못된 것인지좀 봐주세요.

seojh1431의 이미지

void select(int i, struct hakseang *student, int count)
.
.
.
.
switch 구문에서
for (i = 0; i < 3; i++)
{
if (strcmp((student + num)->bookTitle[i], (student + num)->bookTitle[n - 1]) == 0) // 이부분에 코딩오류가 있는것 같습니다.
{
for (int all = 0; all < 10; all++)
(student + all)->state[n - 1] = 0;
(student + num)->countBook--;

printf("%s를 반납하셨습니다.\n", (student + num)->bookTitle[n - 1]);
printf("남은 권 수 : %d\n", (student + num)->countBook--);
break;
}
.
.
.
.

이 부분에서 저기 strcmp 함수부분에 같은 문자열이라고 판정이 되면 if문이 실행되야하는데

제가 어떤 착오를 했는지는 모르겠지만..else로 들어가버리네요.. 가르쳐주세요 ㅜㅜ 파일 올릴게요 ㅜ

File attachments: 
첨부파일 크기
Package icon bookment.zip6.5 KB
백연구원의 이미지

for (i=0; i<3; i++) 안에 if가 있는데, else에 걸리면 break때문에 for문이 멈춥니다.
3번 다 돌아야 원하시는 결과 나오는거 아닌가요?

그 외 문제라면 다음분께 양보하겠습니다.


소곤소곤

seojh1431의 이미지

익명 사용자의 이미지

전체적인 구조가 문젠데... 일단 해당 현상에 대해서 말씀드리면, 해당 구문이 비교하는건 해당 학생의 i번째 빌린 책과 현재 선택한 책이 같도록 짜야 하는데 (student + num)->bookTitle[n - 1] 은 현재 선택한 책이 아니죠. 책 목록을 저장해 놓고 그 목록의 n번채 책이랑 학생의 i번째 책을 비교해야 맞는게 되겠죠.