본문 바로가기

전체 글

(118)
[인프런|4강] C로 배우는 자료구조 | 전화번호부 v1.0 전화번호부 v1.0 위와 같이 동작되도록 전화번호부 프로그램을 만든다. add, find, status, delete 등의 동작 구현 코딩 이전에 어떤 자료구조로 저장할지 프로그램의 자료구조를 먼저 생각해야한다. - 어떤 데이터를 다루고 유지해야 하는지 생각 전화번호부 v1.0의 경우 1. 내부적으로 저장해야하는 데이터는 여러사람의 이름, 전화번호 char * 타입의 names[], numbers[]를 선언 전화번호의 경우 '-' 기호를 사용하며 0으로 시작하는 경우 정수형일때 0이 빠지므로 문제가 된다. 그래서 char 타입을 사용한다. #include .. #define CAPACITY 100 #define BUFFER_SIZE 100 char * names[CAPACITY]; char * numbe..
[인프런|3강] C로 배우는 자료구조 | 문자열 연습문제 문자열 연습문제 위와 같은 결과를 만드는게 목표 #define BUFFER_SIZE 20 int main(void) { char buffer[BUFFER_SIZE]; while(1) { printf("$ "); //scanf(buffer); scanf는 공백 문자 기준으로 끊기 때문에 공백을 포함한 문장에 쓸 수 없음 //gets(buffer); gets는buffer에 담을 수 있는 길이 상관없이 담는 문제가 있다. //fgets(buffer, BUFFER_SIZE, stdin); BUFFER_SIZE만큼 읽는다. 단, \n, buffer size 초과시 원하는 대로 반영이 제대 로 안됨 // buffer[strlen(buffer)-1] = '\0'; fgets를 쓸때 buffer[strlen(buffe..
[인프런|2강] C로 배우는 자료구조 | 문자열 문자열 char str[6]; str[0] = 'h'; str[1] = 'e'; str[2] = 'l'; str[3] = 'l'; str[4] = 'o'; str[5] = '\0'; 이런식인 경우 문자열에 끝에 '\0' 값을 넣어주지 않으면 제대로 동작하지 않는다. 문자열이 끝났는지 아닌지 알기 위해서 '\0' 써야한다. 단, char str[] = "hello"; char *str ="hello"; 과 같이 표현하는 경우 '\0'를 문자열 끝에 넣어주지 않아도 된다. 하지만 char *str ="hello"; 로 표현하는 경우 문자열 수정이 불가능하다하여 string literal이라고 한다. 엄밀하게 말하면 문자열 배열이 아닌 string literal이다. 사실 char str[] = "hello"..