C

메모리는 넉넉하게

은전 2022. 12. 6. 03:21

구조체 배열을 사용하여 주소록을 만드는 문제

이 문제 보고 이거 쉬울 것 같다고 생각하고 막 덤벼들었는데

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. 메모리 보기

필수...