본문 바로가기

분류 전체보기93

시그널 처리. 과제 2011. 10. 6.
'gets' function is dangerous and should not be used. 'gets' function is dangerous and should not be used. gets는 버퍼에 얼마나 값을 저장할지 지정하지 않기 때문에 버퍼오버플로우 기법에 노출된다. 때문에 fgets를 이용해 크기를 지정해서 사용하는 방법을 채택한다. fgets(char *, int, FILE *) (저장할 버퍼, 저장할 크기, 읽어들일 대상) 읽어들일 대상에 주로 stdin 을 사용한다. 즉 키보드에서 입력한 값을 읽는다는 의미이다. 키보드에서 읽어서 크기만큼 버퍼에 저장하게 된다. gets의 경우 과정은 동일하지만 키보드가 기본이자 고정이다. 다른 곳으로부터 읽을 수 없으며. 읽는 크기에 대한 제약이 없다. 2011. 10. 6.
표준 파일 입출력 * 표준 입출력 함수 사용 : 모든 OS 에서 사용할 수 있는 함수 - ANSI C 에서 제공하는 표준함수임. * 저수준 입출력 함수 사용 : UNIX / LINUX 에서 제공되는 함수 - 외부 입/출력 장치도 파일로 다룸.... - 파일의 속성을 제어하는 함수도 제공됨. //***************** 파일 처리 작업 순서 ------------------- 1. 파일포인터 또는 파일지시자 변수 선언 (표준입출력) (저수준입출력) 2. 작업 대상 파일을 연다.(open) : 파일포인터 또는 파일지시자가 대상파일의 주소 또는 정보를 참조하게 됨. 3. 파일안의 내용 입력(read) 또는 출력(write) 처리함 4. 작업이 끝나면 반드시 대상 파일을 닫는다.(close) //**************.. 2011. 10. 6.
[Linux] 디렉토리 처리 함수들 opendir(), readdir(), chdir(), 간단 예제. [Linux] 디렉토리 처리 함수들 opendir(), readdir(), chdir(), getcwd() 간단 예제. [Linux] 디렉토리 처리 함수들 opendir(), readdir(), chdir(), getcwd() 간단 예제. [Linux] 디렉토리 처리 함수들 closedir(), rewinddir(), mkdir(), rmdir() 간단 예제. [Linux] 디렉토리 처리 함수들 closedir(), rewinddir(), mkdir(), rmdir() 간단 예제. : 디렉토리 포멧은 시스템마다 구현에 차이가 있어서 시스템 의존적이다. 디렉토리 관련 오퍼레이션을 시스템과 무관하게 할 수 있도록 하기위해 POSIX.1 에 관련 함수들이 정의 되어 있음 * 디렉토리 읽기 함수 --------.. 2011. 10. 5.
[Linux] 저수준 파일처리. open(), read(), write(), lseek() 간단 예제. 저수준 파일처리. open(), read(), write(), lseek(), close() 간단 예제. 저수준 파일처리. open(), read(), write(), lseek(), close() 간단 예제. 저수준 파일처리. open(), read(), write(), lseek(), close() 간단 예제. * 표준 입출력 함수 사용 : 모든 OS 에서 사용할 수 있는 함수 - ANSI C 에서 제공하는 표준함수임. * 저수준 입출력 함수 사용 : UNIX / LINUX 에서 제공되는 함수 - 외부 입/출력 장치도 파일로 다룸.... - 파일의 속성을 제어하는 함수도 제공됨. //***************** 파일 처리 작업 순서 ------------------- 1. 파일포인터 또는 파일지시.. 2011. 10. 4.
[C언어] 문자열 자르기(strtok). 간단 예제 및 설명. 문자열에서 특정 문자를 기준으로 문자열을 나눌 수 있다. 예를 들어 123,234,578,422 같은 문자열에서 , 기준으로 123 234 578 422 로 추출할 수 있다. 원형 char *strtok(char *s1, char *s2); 사용법. strtok(대상문자열, 기준문자); 기준 문자열을 토큰이라고 함. 아래 소스는 메인에서 입력받은 문자열에서 : 을 기준으로 문자열을 나누는 코드. tmp = strtok(argv[1], ":"); 동작과정은, 우선 문자열에서 지정한 문자( : )를 찾고 그 위치를 null로 변경하다. a a a : b b b N ↑ 검색. a a a N b b b N ↑ NULL 로 변경. 그리고 문자열의 첫 주소를 반환한다. a a a N b b b N ↑첫 주소 변환 .. 2011. 9. 30.
[C언어] 간단하지만 순간 착각 하는 코드. [warning C4172] 리눅스에서의 경고 메시지 function returns address of local variable [enabled by default] 윈도우에서의 경고 메시지 warning C4172: returning address of local variable or temporary 얼필 보면 별 문제 없어 보이는 코드... 함수의 문제도.. 반환형의 문제도.. 반환 받는 놈의 타입도 문제 없다. 주소를 넘겨주고 주소를 받았는데 말이지 - -; 물론, 해결하는 방법은 여러가지 이다. 중요한건 왜? 이게 문제가 되느냐 이지. 문제가 되는 이유이다. 정말 좀 어처구니가 없었는데. 문제가 없을거 같지만 자세히 보면. getname() 함수에서 name[128]이라는 배열을 선언해서 사용하고 있다. 그리고는 그 na.. 2011. 9. 28.
[Linux] Makefile에서의 함수들 Makefile에서의 함수들 쉘 명령어 처리 함수 : shell 문자열 처리 함수들 : subst, patsubst, sort 공백문자 제거 함수 : strip 문자 필터링 함수들 : filter, filter-out, findstring, words, wordlist, word, firstword, join, dir, notdir, suffix, addsuffix, addprefix, basename 변수명이라고 칭하는 것은 아니라 "매크로" or "매크로이름" 이지만. 편의상 변수명이라 칭하겠음. 사용자가 원하는 대로 작성해도 됨. 단, 미리 정해진 이름들은 제외. 구분을 위해서 일반적으로 대문자 사용. [대상문자]는 변수에 문자를 담고, 그 변수를 사용해도 됨. $(변수명) 모든 함수의 결과는 변수.. 2011. 9. 27.
[C언어] scanf의 기본과 문자 입력 안될 때 해결 방법. [C언어] scanf의 기본과 문자 입력 안될 때 해결 방법. [C언어] scanf의 기본과 문자 입력 무시 해결 방법. 기본적으로 scanf는 입력 받은 자료 수를 반환한다. 일반적으로 쓰는 경우는 거의 없기 때문에 본적은 없을지도 모른다. scanf는 값을 입력받아서 scanf( , ) 콤마 좌측에는 입력 받을 값의 형식을 지정해 준다. ex) 정수(%d), 실수(%lf), 문자(%c), 문자열(%s) 등등 우측에 지정해준 변수의 "주소" 에 내가 입력 받은 값을 저장한다. 따라서 변수의 주소를 추출하는 & 연산자가 필요. 지정한 형식과 변수의주소는 정확히 1:1 매치 되어야 한다. 형식을 3개를 적어주고는 변수를 3개 보다 적게 또는 많게 적어주면 문제가 발생한다. 특히나 scanf는 "변수의 주소.. 2011. 9. 21.
컴퓨터 음수 표기에 대한 이해.(보수, 음수) 컴퓨터 음수 표기에 대한 이해.(보수, 음수) 컴퓨터 음수 표기에 대한 이해.(보수, 음수) 컴퓨터 음수 표기에 대한 이해.(보수, 음수) 유용한 정보가 되셨다면 아래 손가락 버튼 한번 눌러주세요 ^-^ 2011. 9. 7.