
구조체 배열을 사용하여 주소록을 만드는 문제
이 문제 보고 이거 쉬울 것 같다고 생각하고 막 덤벼들었는데
1시간 걸렸어요 ㅎㅎ
#include <stdio.h>
#include <string.h>
typedef struct {
char name[16];
char phone[13]; //14로 고쳐야 했어~~~~~
} Book;
int main(){
Book book[20];
FILE *fp;
char fname[20], str[20];
int i = 0;
scanf("%s", fname);
fp = fopen(fname, "r");
while( fscanf(fp, "%s", book[i].name)!= EOF){
fscanf(fp, "%s", book[i].phone);
i++;
}
int p=0;
scanf("%s", str);
for(int j=0; j<i; j++){
if(strcmp(book[j].name, str) == 0){
printf("%s : %s", book[j].name, book[j].phone);
p = 0;
break;
}
else p = 1;
}
if( p == 1 ) printf("cannot find");
fclose(fp);
}
이렇게 짰는데 자꾸 채점 결과가

이런 거예요...
버퍼 문제인가 싶었는데
알고보니 맨 처음에 메모리 할당할 때 폰 번호가 13자리니까 char phone[13]; 이렇게 해버림...
히히
14로 고치니깐 바로 되더라고요
앞으로 저만의 규칙이 세워졌어요
디버깅할 때
1. 메모리 보기
필수...
'C' 카테고리의 다른 글
| [시스템프로그래밍] ssh, sftp, 커널과 셸 (2) | 2023.10.10 |
|---|---|
| [시스템프로그래밍] 가상화, 리눅스, WSL2와 Ubuntu 차이 (0) | 2023.10.10 |
| [자료구조] 불완전한 형식은 사용할 수 없습니다 오류 해결 | typedef (4) | 2023.05.17 |
| [자료구조] 포인터 응용 (0) | 2023.03.17 |
| [C] 포인터 배열을 이용하여 2차원 배열 만들기 : 동적할당 (0) | 2022.12.11 |