memset 메모리를 지정된 값(unsigned char)으로 초기화 하는 함수 헤더 C memory.h 함수명 memset void * memset ( void * ptr, int value, size_t num ); 매개변수 void * ptr 목표가될 배열 혹은 어떤 container의 자료형의 시작 포인터 int value 목표를 채울 값, unsigned char로 변환되어 삽입된다. size_t num 목표를 얼마나 채울 것인지 정하는 값 반환값 void * 목표로 전환된 값의 포인터 반환 C에서 배열 초기화는 반복문을 통해 사용되는 방법과 fill과 memset함수로 초기화하는 방법이 존재한다. 이는 반복문을 통한 번거로움과 깔끔한 코드에 좋은 함수이지만 memset도 주의해야하는 것이 있다..
End of File 파일의 끝을 표현하는 상수 값 (-1) 데이터 소스로부터 더 읽을 데이터가 없음을 나타내는 값으로, C 표준 라이브러리에서 getchar와 같은 문자 입력 함수가 파일 끝에 왔음을 알리기위한 메크로라고 한다. 이 메크로 값은 EOF를 리컨하는데 실제 값은 시스템마다 다르지만 -1이 가장 흔하다고 한다. 이는 어떠한 유효 문자 값(ASCII)와도 겹치지 않기 때문이다. 블록 입력 함수는 입력받은 문자의 수를 리턴하므로, 요구한 입력의 길이보다 작은 수를 리턴할 경우 EOF를 만난 것으로 간주할 수 있다. 간혹 백준 문제를 풀다보면 얼마나 많은 입력 값을 입력할지 알려주지 않는 문제가 있다. 이러한 문제에서 EOF가 할당될 때까지 입력을 받으면 된다. 만약 fgetc(stdin) 으로 ..
atoi 정수 문자열을 정수형 데이터로 형변환 atoi 함수는 정수형 문자열을 정수형 데이터로 전환해준다. atoi 함수는 입력 받은 문자의 앞의 공백을 모두 건너뛰고 첫 문자를 찾아낸다. 그 다음, 음수와 양수 표기가 있는지 확인하고 그 뒤에 나오는 숫자 문자를 읽어 아스키 코드 연산을 통해 숫자를 반환한다. 문자 입력 문자 전반부의 공백 건너뜀 첫 문자 표기법 확인 (음수, 양수 확인) 문자를 읽으며 숫자로 전환 문자가 끝나거나 전환할 문자가 숫자가 아닌 경우 작업 종료 정수 반환 헤더 C stdlib.h C++ cstdlib 함수명 atoi int atoi (const char * str); 매개변수 const char * str 형변환을 진행할 문자열 반환값 int 형변환이 완료된 정수 예제코드 ..
Why does scanf ask twice for input when there's a newline at the end of the format string? #include #include #include char *method1(void) { static char a[4]; scanf("%s\n", a); return a; } int main(void) { char *h = metho... stackoverflow.com 겪은 문제 중에 scanf가 자꾸 2번의 입력을 받으려 한다는 사실을 알았다. 확인해보니 scanf함수를 다음처러 사용했다. scanf("%s\n", name); 위를 보면 입력 문자형 구분란에 '\n'줄바꿈 문자를 넣어버렸다. 즉, 줄바꿈 문자로 입력의 끝을 알아채는 scanf..