[TIL]20210925

박창현·2021년 9월 25일
0

TODAY I LEARNED

목록 보기
48/53

C

버퍼.

버퍼란 프로그램을 실행하는 중에 운영체제가 자동으로 할당하는 메모리의 저장공간이다.

scanf를 이용해서 값을 변수에 저장할 때의 과정을 보면
입력된 값이 바로 변수에 저장되지 않고, 버퍼라는 공간에 일시적으로 저장된다. 그 후 변수에 할당된 양 만큼만 이동된다.
만약 scanf("%c", &ch); 코드를 이용해 abc를 입력했다면, 버퍼에 a b c \0 이 저장되고, %c 즉 글자 하나만 저장해야함으로 버퍼에서 a 하나만 빼서 ch에 저장한다. 그러면 버퍼에는 b c \0 이 남게 된다.

책의 코드를 보면

int main(void){

    char ch;
    int i;
    
    for(i=0; i<3; i++){
        scanf("%c", &ch);
        printf("%c\n",ch);
    }
    return 0;
}

얼핏보면 입력을 3번 할 수 있는 것 처럼 보이지만, 첫번째 입력시에 tiger 을 입력한다면 버퍼 5칸에 값이 모두 저장되고 scanf 에 for문에 순환될때 마다 t 하나, i 하나, g 하나 를 순서대로 제공한다. 그렇기에 입력은 한번밖에 못한 꼴이 된다.
scanf나 getchar등의 명령어는 버퍼에 있는 값을 우선적으로 가져오려하고, 버퍼에 값이 없다면 사용자의 입력을 받는다. 사용자의 입력을 버퍼에 저장하는 것은 운영체제가 하는 일이고 입력을 변수에 저장하는 명령어들(scanf, getchar)은 버퍼에서 값을 긁어오는 기능을 수행한다 생각하면 이해가 쉽다.

getchar();

getchar() 는 버퍼 "한칸만" 리턴해주거나 제거한다. 남은 버퍼를 모두 제거하려면 while(getchar() != '\n'); 을 사용.

css

[속성 = 속성값] 선택자 | [속성 ~= 속성값] 선택자 | [속성 |= 속성값] 선택자 | [속성 ^= 속성값] 선택자 | [속성 $= 속성값] 선택자 | [속성 *= 속성값] 선택자

=의 경우 속성값이 딱 하나, 그리고 완전 일치할때만.
~=는 속성값이 여러개 이더라도 원하는 속성값이 있다면 선택됨.
|=는 속성값 또는 속성값+-의 조합(속성값-~~) 딱 하나의 경우에만 적용됨.
^= 는 속성값이 원하는 단어이거나 원하는 단어로 시작하는 경우.(eng으로 설정하면 eng, english 등 가능)
$= 는 설정한 값으로 끝나는 값이 선택됨.
*= 는 일부 속성값이 일치하면 됨.

a[class="_blank"] {~}
		<li><a href="#" class="_blank">HTML</a></li> <--선택.-->
		<li><a class="_blank _asdf" href="#">CSS Selector</a></li> <--선택 X.-->


a[class ~= "_blank"] {~}
		<li><a href="#" class="_blank">HTML</a></li> <--선택.-->
		<li><a class="_blank _asdf" href="#">CSS Selector</a></li> <--선택.-->
a[title |= "us"] {  /* 속성값이 "us"이거나 "us-"로 시작하는 요소를 찾는 선택자 */~~~}
		<li><a href="#" title="us-english">영어</a></li>
profile
개강했기에 가끔씩 업로드.

0개의 댓글