'gets' function is dangerous and should not be used. gets는 버퍼에 얼마나 값을 저장할지 지정하지 않기 때문에 버퍼오버플로우 기법에 노출된다. 때문에 fgets를 이용해 크기를 지정해서 사용하는 방법을 채택한다. fgets(char *, int, FILE *) (저장할 버퍼, 저장할 크기, 읽어들일 대상) 읽어들일 대상에 주로 stdin 을 사용한다. 즉 키보드에서 입력한 값을 읽는다는 의미이다. 키보드에서 읽어서 크기만큼 버퍼에 저장하게 된다. gets의 경우 과정은 동일하지만 키보드가 기본이자 고정이다. 다른 곳으로부터 읽을 수 없으며. 읽는 크기에 대한 제약이 없다.
* 표준 입출력 함수 사용 : 모든 OS 에서 사용할 수 있는 함수 - ANSI C 에서 제공하는 표준함수임. * 저수준 입출력 함수 사용 : UNIX / LINUX 에서 제공되는 함수 - 외부 입/출력 장치도 파일로 다룸.... - 파일의 속성을 제어하는 함수도 제공됨. //***************** 파일 처리 작업 순서 ------------------- 1. 파일포인터 또는 파일지시자 변수 선언 (표준입출력) (저수준입출력) 2. 작업 대상 파일을 연다.(open) : 파일포인터 또는 파일지시자가 대상파일의 주소 또는 정보를 참조하게 됨. 3. 파일안의 내용 입력(read) 또는 출력(write) 처리함 4. 작업이 끝나면 반드시 대상 파일을 닫는다.(close) //**************..
[Linux] 디렉토리 처리 함수들 opendir(), readdir(), chdir(), getcwd() 간단 예제. [Linux] 디렉토리 처리 함수들 opendir(), readdir(), chdir(), getcwd() 간단 예제. [Linux] 디렉토리 처리 함수들 closedir(), rewinddir(), mkdir(), rmdir() 간단 예제. [Linux] 디렉토리 처리 함수들 closedir(), rewinddir(), mkdir(), rmdir() 간단 예제. : 디렉토리 포멧은 시스템마다 구현에 차이가 있어서 시스템 의존적이다. 디렉토리 관련 오퍼레이션을 시스템과 무관하게 할 수 있도록 하기위해 POSIX.1 에 관련 함수들이 정의 되어 있음 * 디렉토리 읽기 함수 --------..
저수준 파일처리. open(), read(), write(), lseek(), close() 간단 예제. 저수준 파일처리. open(), read(), write(), lseek(), close() 간단 예제. 저수준 파일처리. open(), read(), write(), lseek(), close() 간단 예제. * 표준 입출력 함수 사용 : 모든 OS 에서 사용할 수 있는 함수 - ANSI C 에서 제공하는 표준함수임. * 저수준 입출력 함수 사용 : UNIX / LINUX 에서 제공되는 함수 - 외부 입/출력 장치도 파일로 다룸.... - 파일의 속성을 제어하는 함수도 제공됨. //***************** 파일 처리 작업 순서 ------------------- 1. 파일포인터 또는 파일지시..
문자열에서 특정 문자를 기준으로 문자열을 나눌 수 있다. 예를 들어 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 ↑첫 주소 변환 ..
리눅스에서의 경고 메시지 function returns address of local variable [enabled by default] 윈도우에서의 경고 메시지 warning C4172: returning address of local variable or temporary 얼필 보면 별 문제 없어 보이는 코드... 함수의 문제도.. 반환형의 문제도.. 반환 받는 놈의 타입도 문제 없다. 주소를 넘겨주고 주소를 받았는데 말이지 - -; 물론, 해결하는 방법은 여러가지 이다. 중요한건 왜? 이게 문제가 되느냐 이지. 문제가 되는 이유이다. 정말 좀 어처구니가 없었는데. 문제가 없을거 같지만 자세히 보면. getname() 함수에서 name[128]이라는 배열을 선언해서 사용하고 있다. 그리고는 그 na..