본문 바로가기

리눅스32

gcc에서 문자열처리 Pascal을 사용하다가 C를 사용하다 보면 제일 답답한 것이 Pascal의 String과 같이 편리한 문자열 처리 변수 타입이 없다는 것입니다. 지금도 이해가 안 되는데, Pascal보다 이후에 나온 C에서 왜 String 변수 타입을 추가하지 않았을까 하는 점입니다. 파스칼은 1969년에 스위스 ETH 취리히의 컴퓨터 과학자 니클라우스 비르트가 개발되었죠. C언어는 1970년에 개발된 B언어를 바탕으로 1972년 켄 톰슨과 데니스 리치에 의해 만들어 졌습니다. B언어에 String 변수 타입이 없었기 때문이 가장 큰 이유이겠지만, C언어 개발자가 파스칼의 String 변수에 대해 몰랐거나(몰랐다고 말하기에는 힘들겠지만,) 알았어도 필요성을 느끼지 못했기 때문일지 모르겠습니다. 어찌 되었든 C언어에 S.. 2015. 11. 17.
[리눅스 API] 파일 I/O 버퍼링 파일 I/O 버퍼링 버퍼 크기가 I/O 시스템 호출 성능에 미치는 영향 - 1억 바이트의 파일을 복사하는데 가장 적당한 크기의 버퍼 사이즈는 얼마일까? 실험결과 4096바이트 크기의 버퍼 사이즈일 때 가장 성능이 좋다. - 1억 바이트의 파일을 복사할 때, 대부분의 소요 시간은 디스크 읽는 시간이다. stdio 라이브러리 내의 버퍼링 #include int setvbuf(FILE *stream, char *buf, int mode, size_t size) : 성공하면 0을 리턴하고, 에러가 발생하면 0이 아닌 값을 리턴 - stream 인자는 버퍼링이 수정돼야 하는 파일 스트림을 식별한다. 해당 스트림이 열리고 난 후에, setvbuf() 호출은 그 스트림에서 다른 stdio 함수를 호출하기 전에 실행돼.. 2015. 8. 30.
[Vi 편집기] 고급 기능 기본적인 것을 익힌 다음에 좀 더 고급스런 기능을 사용하고자 할때 필요한 내용들. ============================ 0. 소스 브라우징과 패턴 교환 ============================ [[, ]] - 문단 옮기기 % - {}의 짝 찾기 ctrl + P - 자동 완성 기능 ma, 'a - 다중 마크 기능 특정 패턴을 다른 패턴으로 바꾸기 :s /old /new - 현재 줄의 처음 old를 new로 교체 :s /old /new /g - 현재 줄의 모든 old를 new로 교체 :1,20s /old /new /g - 1부터 20번째 줄까지 모든 old를 new로 교체 :-2, +4s /old /new /g - 커서 2줄 위부터 4줄 아래까지 모든 old를 new로 교체 :%s .. 2015. 8. 22.
[리눅스] 파일에서 내용 한번에 바꾸기 test.c 에 다음과 같은 내용이 있다고 합시다. : #include "before/header.h" : 이걸 다음과 같이 바꾸어 놓고 싶은 거죠 : #include "a.h" : 이때 sed 명령은 다음과 같은 내용으로 쓰면 됩니다. sed -i 's/바꿀대상/바꿀내용/g' 파일명 그런데 문자열에 " , / , # 등이 있죠 이런 문자들은 앞에 \을 붙이면 됩니다. 자 그러면 다음과 같은 명령을 치면 됩니다. # sed -i 's/\#include \"before\/header.h\"/\#include \"a.h\"/g' test.c 2015. 8. 20.