본문 바로가기

CS

(43)
[인프런|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"..
[인프런|1강] C로 배우는 자료구조 | C언어 기초 문법 리뷰 1.C언어 기초 문법 리뷰 - 배열, 포인터, 문자열, 동적메모리할당 메모리 컴퓨터의 메모리는 데이터를 보관하는 장소 바이트(8bit) 단위로 주소가 지정 모든 변수는 주소를 가진다. 포인터: 메모리의 주소를 값으로 가지는 변수 type-name * variable-name; int * ptr; int c = 12; int *p; p = &c; // *p =>12, p=> 변수 c의 주소가 담김 int x=1, y=2; int * ip; ip = &x; y = *ip; *ip = 0; 포인터를 쓰는 이유: 데이터 할당을 더욱 유연하게 하기위해서 저장하려는 데이터 사이즈를 (배열 등에) 크게하기도 했다 작게하기도 하기 위해, 연결리스트 등 다른 자료구조에서도 데이터를 할당의 유연성을 위해 포인터와 배열 배..