C언어 - scanf와 gets사용시 주의!(버퍼)
·
C프로그래밍/오류해결
문자열을 입력받거나 혹은 데이터를 입력받을때 scanf()와 gets()를 주로 사용한다. gets()는 공백문자를 포함하는 한줄의 문자열을 읽는다. 그리고 엔터키, 즉 줄바꿈문자('\n')는 포함되지 않으며 자동으로 NULL문자('\0')를 추가한다. 그리고 buffer라는 저장소에 저장된다. 반면에 scanf()는 하나의 단어밖에 입력받지 못한다. 공백을 포함하지 못한다. 표준입출력함수 printf, scanf, putchar, getchar, puts, gets같은 것들은 '표준 입출력 함수'라고한다. 이런 표준 입출력 함수를 사용할 때는 buffer라는 것을 제공받게 된다. 그렇다면 buffer는 뭘까?buffer란 여분의 임시 메모리 공간이다. 우리가 scanf, gets함수를 써서 데이터를 입..
C언어 - 동적 메모리
·
C프로그래밍/개인 공부
동적 메모리란? 프로그램이 메모리를 할당하는 방식에는 2가지 방법이 있다. 우리가 처음부터 써왔던 방법은 '정적 메모리 할당(static memory allocation)'이다. '정적 메모리 할당'은 미리 정해놓은 만큼의 메모리를 할당받는 것이다. 이 방법은 간편하지만 단점이있다. 공간의 낭비가 있을 수 있기 때문이다. 예를 들어서, 학생들 성적을 저장하기위해서 미리 100개의 정수를 저장할 수 있는 배열을 만들었다고 가정해보자. int scores[100] 하지만, 이 배열에 70명의 학생의 성적만이 입력된다면, 나머지 30개의 공간은 낭비되게 된다. 그렇다면 필요한 공간만 그때그때 할당받으면 메모리를 더욱 효율적으로 사용할 수 있게된다. 이것이 '동적 메모리 할당(dynamic memory allo..
Git - git log <커밋아이디>, diff <커밋아이디>..<커밋아이디>
·
Git 학습/학습중
git log 로 이전까지의 모든 커밋기록을 보자 일단 git log를 입력해서 우리가 지금까지 커밋한 기록을 확인해보자. 지금까지 3번의 커밋이 있었다. 커밋메세지는 1, 2, 3으로 만들었는데, 순서를 알아보기 쉽게하려고 이렇게 했음. 빨간줄로 표시한 부분은 '커밋 아이디'라고 하는 부분인데, 각각의 커밋은 자신만의 고유의 아이디를 가진다.(참조시 활용) git log 커밋아이디 를 입력하면 이전의 커밋 기록이 쫘르륵 나온다. 2번째 커밋의 커밋아이디를 복사하고, git log 커밋아이디를 입력하면 위 처럼 2번째 커밋 이전의 모든 커밋기록이 나온다. 즉 1번 커밋, 2번커밋의 기록만 나오는 것이다. (git log 5번커밋아이디 를 입력하면 1, 2, 3, 4, 5까지의 커밋내용이 나올 것이다.) ..
Git - 파일을 수정하고 commit해서 차이점 보기
·
Git 학습/학습중
이번에는 저번에 작성했던 파일을 수정하고, 수정된 파일을 커밋해서 버전간의 차이를 알아보자. 일단 vim test1.txt에 접근해서 수정을 해보자. vim test1.txt로 접근하고, 1이었던 내용을, 이제 2를 추가해보자, 그리고 :wq를 하고 나간다. 그리고 git status를 입력해서 지금 상태가 어떤지 확인한번 해보자 확인을 해보니, test1.txt가 수정되었다고 나온다, 근데 add로 추가하지 않았기 때문에, 빨간색으로 나온다 커밋하도록 정하지 않은 변경사항이라고 나온다. 여기서 git add test1.txt를 하고, 다시 git status를 입력하여 상태가 어떻게 변하는지 보자. add하고 status를 확인하니 초록색으로 나오면서 커밋할 변경사항이라고 나온다. 그리고 이 파일은 c..
Git - add / commit
·
Git 학습/학습중
저번엔 만들었던 git_test폴더에서 init을 하면서, 버전관리를 시작했다. 이번에는 파일을 생성하고 그 파일을 add하여 상태까지 살펴보려고 한다. vim text1.txt로 텍스트 파일을 하나 생성해주고, 그러면 이런 vim에디터라는 텍스트 편집기가 나오게된다. 사용방법은 i를 누르면 하단에 INSERT라고 나온다. 이 상태에서 내용을 입력하고 esc키를 누르면 insert모드가 끝나게된다. 필자는 내용에 1을 입력하고 esc키를 눌렀다. 그리고 :wq를 입력하고 엔터를 누르면 저장과 동시에 에디터를 나갈 수 있다. git_test에서 ls명령어를 입력해보니 test1.txt라는 파일이 잘 생성된 것을 볼 수 있다. 이제 파일생성, 편집까지 했으니 add를 해보자 git add test1.txt를..
Git - init
·
Git 학습/학습중
저번 포스팅에서는 윈도우에서 깃을 실행했었고 git bash로 실행했었는데, 작업환경이 바뀌어서 이제부터는 mac으로 해야할 듯 싶다. 맥에서는 home brew로 git을 설치해줬다. git bash는 어차피 윈도우 환경에서 리눅스처럼 사용하기 위한거라.. mac에서는 bash가 필요없다. 그냥 터미널로 해결하면 된다. git init 1) git init명령어는 이 파일에서 버전관리를 시작하겠다는 뜻이다. 이 명령어를 내리기 위해서, 일단 파일의 위치로 가야한다. pwd와 cd , 그리고 ls를 이용해 버전관리를 할 파일로 이동한다. (기본적인 명령어라서 따로 설명안함) https://shitandcomputer.tistory.com/11 (명령어 모음) mkdir 명령어를 써서 git_test라는 ..